线程共享哪些进程资源?独占哪些资源?
线程独占的资源
1. 线程运行的本质就是函数的执行,函数运行时的信息保存在栈帧中,包括函数的返回值、使用的局部变量、寄存器信息等,因此每个进程都有自己独立的、私有的栈区
2. 程序计数器、函数运行使用的寄存器组的值也是线程私有的
3. 每个线程用户独立的线程ID、独立的调度优先级、错误返回码
线程共享的资源
1. 多个线程共享进程的代码区,代码区存放的是编译后的可执行机器指令,即任何一个函数都可以放到线程中去执行
2. 多个线程共享进程的数据区,即任何一个线程都可以访问全局变量和静态变量
3. 多个线程共享进程的堆区,尽管栈区是线程的私有数据,但栈区没有添加任何保护机制,一个线程的栈区对其他线程也是可见的
4. 动态链接库:若一个程序是动态链接的,那么其地址空间中有一部分包含的就是动态链接库,该部分也是被多个线程共享的
5. 文件:如果程序运行时打开了一些文件,那么进程地址空间中保存了打开的文件信息,进程打开的文件也属于线程共享的资源
6. 线程共享当前工作目录、以及用户ID和组ID
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律