0

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

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

B) 主线程的堆栈分配是多少?是那个ulimit -s尺寸吗?

C) 子线程的堆栈分配是多少?是那个ulimit -s尺寸吗?

D)主线程和其他线程的堆栈大小是依赖的?

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

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

谢谢

4

1 回答 1

1

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

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

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

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

F. 没有。

于 2012-06-30T07:28:04.360 回答