为什么默认堆栈大小为0

时间:2012-02-18 09:59:32

标签: c pthreads

我正在阅读来自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?

1 个答案:

答案 0 :(得分:3)

属性中的堆栈大小是最小堆栈大小,可能为零。我怀疑在这种情况下,使用该属性创建的任何线程都会获得合理的默认值,例如4M。

如果你想要默认值,我们的想法就是单独保留属性堆栈大小,如果你想强制它达到特定的最小值,则将其设置为其他值。