首页 > 试题广场 >

在支持多线程的系统中,进程P创建的若干个线程不能共享的是(

[单选题]

在支持多线程的系统中,进程P创建的若干个线程不能共享的是( )。

  • 进程 P 的代码段
  • 进程 P 中打开的文件
  • 进程 P 的全局变量
  • 进程 P 中某线程的栈指针

同一进程间的线程共享的资源有】

a. 堆  由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)

b. 全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的

c. 静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的

d. 文件等公用资源  这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。

【独享的资源有】

a. 栈 栈是独享的

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

线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。

发表于 2020-09-25 21:17:04 回复(0)

每个线程都有它自己的线程上下文.线程上下文包括:

线程ID,栈,栈指针,程序计数器,条件码和通用寄存器的值。

多个线程在进程敏感词享如下部分:

虚拟地址空间,只读代码块,读、写数据,堆,打开的文件集合。


寄存器在线程中不共享,虚拟存储器在线程敏感词享。


在编写多线程C语言程序时:

1、全局变量。  全局变量在运行时,任何线程都可以引用全局变量。

2、本地局部变量。每一个线程的栈都包含自己独立的本地局部变量。

3、本地静态变量。每一个线程都可以共享本地静态变量。

发表于 2016-12-15 14:52:07 回复(0)
进程间的线程共享的资源有:
  1. 堆  由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)
  2. 全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的
  3. 静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的
  4. 文件等公用资源  这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。
独享的资源:
  1.  栈 栈是独享的
  2. 寄存器
发表于 2022-05-19 09:30:20 回复(0)
其实栈指针是可以共享的,只是不提议这样做,很容易bug
发表于 2022-08-04 04:20:58 回复(0)
D 栈指针
发表于 2018-11-03 21:43:15 回复(0)