Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我试图了解 Linux 中 pthreads 库的堆栈分配。这里有几个问题:
A)什么是主线程?- 那是运行 C main() 程序的线程吗?
main(
B) 主线程的堆栈分配是多少?是那个ulimit -s尺寸吗?
ulimit -s
C) 子线程的堆栈分配是多少?是那个ulimit -s尺寸吗?
D)主线程和其他线程的堆栈大小是依赖的?
E) 进程栈和线程栈是共享的吗?我如何决定进程堆栈(比如a.out)大小。
a.out
F) 这些信息在 NPTL 和 LinuxThreads 实现之间是否有所不同?
谢谢
A:是的 B:是的 C:也许。
如果在创建线程时使用的 pthread_attr_t 没有指定堆栈大小,并且如果ulimit -s不是无限的,ulimit -s则将确定新创建的线程的堆栈大小。
D:问题不清楚。它们不相互依赖,但ulimit -s在某些条件下它们确实相互依赖。
E. 是与否。它们在内存可见性的意义上是共享的——主线程可以读取和写入其他线程的堆栈变量,反之亦然。但是每个线程都在自己的堆栈上执行,如果两个线程开始在同一个堆栈上执行,那将是一场灾难。
F. 没有。