我正在尝试理解Linux中pthread库的堆栈分配。这里有几个问题:
A)什么是主线程?-那是运行C main(
)程序的线程吗?
B)主线程的堆栈分配是多少?这是ulimit -s
的大小吗?
C)子线程的堆栈分配是多少?这是ulimit -s
的大小吗?
D)主线程和其他线程的堆栈大小是相关的?
E)进程栈和线程栈是共享的吗?如何决定进程堆栈(比如a.out
)的大小。
F)这些信息在NPTL和LinuxThreads实现之间是否有所不同?
谢谢
发布于 2012-06-30 15:28:04
答:是的。
B:是的
C:也许吧。
如果创建线程时使用的pthread_attr_t没有指定堆栈大小,并且ulimit -s
不是无限的,那么ulimit -s
将确定新创建的线程的堆栈大小。
D:问题还不清楚。它们并不相互依赖,但在某些条件下确实都依赖于ulimit -s
。
E.是和不是。它们在内存可见性方面是共享的--主线程可以读写其他线程的堆栈变量,反之亦然。但是每个线程都在自己的堆栈上执行,如果有两个线程开始在同一个堆栈上执行,那将是一场灾难。
F.否
https://stackoverflow.com/questions/11272137
复制相似问题