【发布时间】:2013-08-23 09:35:25
【问题描述】:
当我从一个进程创建多个线程时,每个线程都有自己的堆栈,还是它们共享父进程的堆栈。当线程进行系统调用时会发生什么?线程是否也像进程一样维护自己的内核堆栈?
【问题讨论】:
-
是线程特定堆栈!,全局值可在线程之间共享(本地非)
-
@GrijeshChauhan 当我们从线程进行系统调用时会发生什么?
-
例如如果你调用
open()系统调用来打开一个文件。使用int f = open()然后当然f是线程本地的。但请记住文件描述符在线程之间共享。如果您知道f的值,那么您可以在不同的线程中使用该值来访问同一个文件(您不需要再次打开) -
@LidongGuo No. 线程语义是两个委员会合作的一件事。 (接口有所不同,因为 C 显然不能为线程、互斥锁等提供“对象”,但语义是相同的。)
标签: c++ c multithreading pthreads stack