首页 > 试题广场 >

同一个进程的多个线程堆栈共享状况哪个描述正确?

[单选题]
同一个进程的多个线程堆栈共享状况哪个描述正确?
  • 堆共享,栈私有
  • 堆私有,栈共享
  • 堆共享,栈共享
  • 堆私有,栈私有
推荐
线程共享堆,但是每个线程有自己的寄存器和栈
编辑于 2015-09-06 15:21:08 回复(0)
A
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 
发表于 2015-09-11 12:38:25 回复(0)
线程共享的内容包括:

    进程 代码段
    进程 数据段
    进程打开的文件描述符、
    信号的处理器、
    进程的当前目录和
    进程用户 ID 与进程组 ID     

      线程独有的内容包括:

    线程 ID
    寄存器组的值
    线程的堆栈
    错误返回码
    线程的信号屏蔽码
发表于 2018-04-30 22:07:27 回复(0)

线程占有的都是不共享的,其中包括:栈、寄存器、状态、程序计数器

线程间共享的有:堆,全局变量,静态变量;

进程占有的资源有:地址空间,全局变量,打开的文件,子进程,信号量、账户信息。

编辑于 2015-09-15 15:39:58 回复(0)
选A
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 
发表于 2020-07-25 06:55:01 回复(0)
AC 描述不清晰,正确的应该是同一个进程的堆栈都是共享的,对于该进程下的所有线程。
但是线程可以有自己的栈,这是私有的。
编辑于 2018-10-12 16:44:07 回复(0)
A
发表于 2018-05-17 11:19:03 回复(0)
堆: 是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。 栈:是个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立,因此,栈是 thread safe的。每个C ++对象的数据成员也存在在栈中,每个函数都有自己的栈,栈被用来在函数之间传递参数。操作系统在切换线程的时候会自动的切换栈,就是切换 SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放。
编辑于 2018-04-11 09:05:24 回复(0)

线程占有的都是不共享的,其中包括:栈、寄存器、状态、程序计数器;
线程间共享的有:堆,全局变量,静态变量;
进程占有的资源有:地址空间,全局变量,打开的文件,子进程,信号量、账户信息。

发表于 2017-09-08 16:33:29 回复(0)

线程占有的都是不共享的,其中包括:栈、寄存器、状态、程序计数器

线程间共享的有:堆,全局变量,静态变量;

进程占有的资源有:地址空间,全局变量,打开的文件,子进程,信号量、账户信息。

发表于 2016-07-07 16:40:26 回复(0)

选A,在一个进程的线程共享堆区。因为堆栈是保证线程独立运行所必须的。线程函数可以调用函数,而被调用的函数中又是可以层层嵌套的,所以线程必须拥有自己的函数堆栈,使得函数调用可以正常执行,不受其他线程的影响。

发表于 2015-09-11 22:27:53 回复(0)
a,堆是手动申请和使释放的,你把指针传递给线程函数,就可以了,线程内有可以共享一个进程的函数,栈是自动申请释放的,函数调用是需要栈来保存现场的,每个线程都有自己的栈空间。
发表于 2015-09-09 17:52:50 回复(0)
线程资源依赖进程,因为进程才是系统资源分配的基本单位。但是在创建线程的时候,会分配栈。堆和进程共享。
发表于 2015-09-09 15:36:05 回复(1)
发表于 2015-04-09 16:29:49 回复(0)
A
发表于 2015-04-06 09:49:27 回复(0)