提高::线程属性设定(呼叫)堆栈大小(boost::thread attributes settin

2019-10-30 07:59发布

我得到我的多线程应用程序崩溃,我怀疑被堆栈溢出(应该是一个不错的网站问这个问题),因为我在做一些非常深刻的递归和崩溃不会的更小的订单发生问题。 我使用boost ::线程。 它提供了通过一个属性possibillity设置堆栈大小(预先):

boost::thread::attributes l_ThreadAttributes;
l_ThreadAttributes.set_stack_size(8000000);
boost::thread l_MyThread(l_ThreadAttributes, l_MyFunctor);

我不是很确信这实际工作。 如果我通过相同的属性“get_stack_size()”问当前的堆栈大小,我得到0。有没有人有这方面的经验(我在Windows 7上工作的32位时,Visual Studio 2008年9,boost_1_54_0)? 此外,这怎么会涉及到我会把在连接设置(属性 - >链接器 - >系统 - >堆栈保留大小 - > 800万为例)的价值?

有没有检查我有多少堆在运行时左(在当前线程)一个便捷的方式? 曾经是在malloc.h所和/或stdlib.h中的方便stackavail()函数似乎已经消失。

在此先感谢,丹尼尔·德克斯

文章来源: boost::thread attributes setting (call) stack size