Pthreads:主线程和子线程堆栈大小之间的关系

时间:2012-06-30 06:53:37

标签: c linux gcc pthreads

我试图了解Linux中pthreads库的堆栈分配。这里有几个问题:

A)什么是主线? - 这是运行C main()程序的线程吗?

B)主线程的堆栈分配多少钱?这是ulimit -s大小吗?

C)子线程的堆栈分配多少?这是ulimit -s大小吗?

D)主线程和其他线程的堆栈大小是否相关?

E)进程堆栈和线程堆栈是否共享?我如何决定进程堆栈(比如a.out)大小。

F)这些信息在NPTL和LinuxThreads实现之间是否有所不同?

由于

1 个答案:

答案 0 :(得分:1)

答:是的 B:是的 C:也许。

如果在创建线程时使用的pthread_attr_t没有指定堆栈大小,并且ulimit -s不是无限制的,那么ulimit -s将确定新创建的线程的堆栈大小。

D:问题不清楚。它们并非相互依赖,但在某些条件下它们都依赖于ulimit -s

电子。是的,不是。它们在内存可见性的意义上共享 - 主线程可以读取和写入其他线程的堆栈变量,反之亦然。但是每个线程都在自己的堆栈上执行,如果两个线程开始在同一个堆栈上执行,那将是一场灾难。

F。否。