线程共享进程的哪些资源

哪些是线程私有的?

线程实际上一个个函数的执行过程,函数执行过程中的信息保存在栈帧中,一个个栈帧构成栈区,程序执行过程中需要寄存器来存中间变量,还需要一个程序计数器,指向下一条执行的指令;线程所属栈区、程序计数器以及函数运行时所需的寄存器是线程私有的,称为线程上下文 thread context。

哪些是线程共享的?

堆区

Java 程序中 new 出来的对象就放在这里,只要有该对象的指针,其他线程也可以访问该对象。(Java中的引用传递就是传递对象的引用,而简单数据类型在栈区分配,只能值传递)

已打开的文件

线程打开的文件资源是挂在进程上的,线程销毁后文件资源不会自动回收,这就是为什么打开的文件要及时关闭的原因。

动态链接库

源代码编译为目标代码后需要经过链接才能成为可执行文件(Windows中的exe文件,Linux中的ELF文件),链接时有动态链接和静态链接,静态链接就是将所有机器指令全部打包到可执行文件中,动态链接则是在运行时再找动态库中的机器指令。这些动态链接库是线程共享的。

代码区

代码区存放的是机器指令,源代码编译后成为的机器指令就放在这里,所有的线程共享代码区,也就是说没有特定的函数只能被某个线程执行。

数据区

数据区中方的是全局变量,Java中static修饰的变量就放在这里。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值