【004 操作系统】线程有哪些资源是共享的,栈是自己独有的吗?

共享的资源有:

  • 堆。 由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)。
  • 全局变量 。它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的
  • 静态变量。 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的。
  • 文件等公用资源。 这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。

独享的资源有:

  • 栈 。栈是独享的。
  • 寄存器 。 这个可能会误解,因为电脑的寄存器是物理的,每个线程去取值难道不一样吗?其实线程里存放的是副本,包括程序计数器PC。
     

Guess you like

Origin blog.csdn.net/qq_41709234/article/details/132312384