【问题标题】:Pthreads: Relation between main thread and subthread stack sizesPthreads:主线程和子线程堆栈大小之间的关系
【发布时间】:2012-06-30 06:53:36
【问题描述】:

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

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

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

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

D) 主线程和其他线程的栈大小有关系吗?

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

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

谢谢

【问题讨论】:

    标签: c linux gcc pthreads


    【解决方案1】:

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

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

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

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

    F。没有。

    【讨论】:

    • 对于问题D,进程堆栈是主线程堆栈的另一种说法吗?或者它是一个不同的堆栈?
    • @LunarMushrooms 是的,进程堆栈是主线程堆栈的另一个术语。
    猜你喜欢
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2011-07-27
    • 2014-04-14
    • 2017-12-11
    相关资源
    最近更新 更多