在多线程进程中,跨线程共享以下哪个程序状态组件?
我的建议;只有全局变量,全局变量在堆上分配?所以堆内存和全局变量。它是否正确?
答案 0 :(得分:15)
永远堆积内存。
全局变量取决于平台,通常是共享的。
堆栈是特定于线程的,也是寄存器。
答案 1 :(得分:1)
这取决于语言和线程实现。例如,我不认为即使C也允许你直接访问CPU寄存器,所以说pthreads是否共享寄存器(对于记录,我相当肯定它没有)是相当没有意义的。同样在C中,全局变量 not 实际上是在堆上分配的,尽管它们可能是其他语言。
堆栈更复杂。在C / pthreads中,每个线程都有自己的堆栈,但在其他语言和线程模型中,情况可能会复杂得多,因为底层堆栈模型可能不那么简单。
答案 2 :(得分:0)
堆栈:没有
寄存器:否
堆:是的(如果你必须选择y或n,真正的答案取决于它)
全球:是的
答案 3 :(得分:0)
全局值和堆内存在多线程进程中共享。寄存器值和堆栈存储器对每个线程都是专用的。