C ++ Boost线程属性set_stack_size

时间:2015-06-22 19:50:24

标签: c++ boost boost-thread

我正在尝试找到一个合适的值来设置boost :: thread的堆栈大小。我正在使用该线程执行递归操作,并发现默认大小不足以达到我的目的,导致堆栈溢出。

我从boost::thread::attributes documentation了解到set_stack_size()函数为底层平台特定属性提供了一个可移植的接口。

boost::thread::attributes attributes;
std::cout << "DEFAULT: " << attributes.get_stack_size() << std::endl;

在我的机器上(运行Yosemite / XCode 6.3.2的MBP)打印:

DEFAULT: 524288

我发现80,000,000的值可以防止我的所有测试用例崩溃。但是,我不确定这是否包含所有可能的案例,我希望有人可以提供有关此功能的一般设计的一些见解。

增加这个价值的成本是多少?或者,换句话说,这个设置是直接控制在运行时分配的内存量还是只设置某种潜在的上限而不实际从一开始就分配一大块内存?从我到目前为止所知,增加这个值似乎并没有改变我程序的内存使用。它是否正确?并且,平台的成本会有所不同吗?

感谢您的帮助!

0 个答案:

没有答案