一个进程中线程的总堆栈大小

时间:2010-05-20 03:30:28

标签: linux stack pthreads

我使用pthreads_attr_getthreadsizes()来获取一个线程的默认堆栈大小,在我的机器上为8MB。

但是当我创建8个线程并为它们分配一个非常大的堆栈大小(比如几百MB)时,程序崩溃了。

所以,我想,

("Number of threads" * "stack size per thread") < a constant value (e.g. virtual memory size)

1 个答案:

答案 0 :(得分:1)

简短的回答是“是”。

更长的答案是所有线程共享一个虚拟地址空间,因此该空间的用户空间可用部分必须足够大以包含所有线程堆栈(以及代码,静态数据,堆,库)和任何杂项映射。)

正如他们在经典中所说的那样,数百兆字节的堆栈表明你做错了。