我试图了解Linux中pthreads库的堆栈分配。这里有几个问题:
A)什么是主线? - 这是运行C main(
)程序的线程吗?
B)主线程的堆栈分配多少钱?这是ulimit -s
大小吗?
C)子线程的堆栈分配多少?这是ulimit -s
大小吗?
D)主线程和其他线程的堆栈大小是否相关?
E)进程堆栈和线程堆栈是否共享?我如何决定进程堆栈(比如a.out
)大小。
F)这些信息在NPTL和LinuxThreads实现之间是否有所不同?
由于
答案 0 :(得分:1)
答:是的 B:是的 C:也许。
如果在创建线程时使用的pthread_attr_t没有指定堆栈大小,并且ulimit -s
不是无限制的,那么ulimit -s
将确定新创建的线程的堆栈大小。
ulimit -s
。
电子。是的,不是。它们在内存可见性的意义上共享 - 主线程可以读取和写入其他线程的堆栈变量,反之亦然。但是每个线程都在自己的堆栈上执行,如果两个线程开始在同一个堆栈上执行,那将是一场灾难。
F。否。