我正在阅读来自https://computing.llnl.gov/tutorials/pthreads/的pthreads,它说
默认线程堆栈大小差别很大。可以的最大尺寸 得到的变化也很大,可能取决于数量 每个节点的线程。显示过去和现在的架构 演示默认线程堆栈大小的广泛变化。
然后它列出了几个处理器的一些默认值,但它从不对任何处理器说0。所以我复制粘贴其C程序并执行。相关部分是:
size_t stacksize;
pthread_attr_init(&attr);
pthread_attr_getstacksize (&attr, &stacksize);
printf("Default stack size = %li\n", stacksize);
我得到了输出:
Default stack size = 0
为什么是0?
答案 0 :(得分:3)
属性中的堆栈大小是最小堆栈大小,可能为零。我怀疑在这种情况下,使用该属性创建的任何线程都会获得合理的默认值,例如4M。
如果你想要默认值,我们的想法就是单独保留属性堆栈大小,如果你想强制它达到特定的最小值,则将其设置为其他值。