我的多线程应用程序崩溃,我怀疑是堆栈溢出(应该是一个很好的网站来问这个问题),因为我正在进行一些非常深的递归,并且崩溃不会发生在较小的情况下订单问题。我正在使用boost :: thread。它提供了通过属性设置堆栈大小(提前)的可能性:
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 9 2008,boost_1_54_0)?此外,这将如何与我将在链接器设置中放入的值相关联(属性 - >链接器 - >系统 - >堆栈保留大小 - 例如> 8000000)?
有没有一种方便的方法来检查我在运行时(在当前线程中)剩余多少堆栈?曾经在malloc.h和/或stdlib.h中的方便的stackavail()函数似乎已经消失了。
提前致谢, Daniel Dekkers