参考链接:https://zhuanlan.zhihu.com/p/352707156
线程的私有信息
(1)线程运行的本质就是函数运行,函数运行时信息保存在栈帧(栈区存储函数运行时的返回地址(程序计数器)、参数、局部变量、寄存器原始值)中,因此每个线程有自己独立、私有的栈区。
(2)线程私有的信息 —— 线程上下文 包括所属线程的栈区、程序计数器、栈指针以及函数运行使用的寄存器
线程的共享信息
进程的内存分配情况:
线程之间共享除 线程上下文信息 中的所有内容,包括栈区、堆区、代码区、数据区
代码区
进程中的代码区存储的是编译后的可执行机器指令。而这些机器指令是从可执行文件中加载到内存的。
线程之间共享代码区,意味着任何函数都可以被线程执行。
堆区
malloc/new 出来的数据就存放在这个区域。
栈区
线程的上下文信息通常是私有的,但它们并没有严格的隔离机制来保护。因此, 若一个线程能拿到来自另一个线程栈帧上的指针,那么该线程就可以改变另一个线程的栈区。
文件
若线程保存有打开的文件信息,则进程打开的文件也可以被所有的线程使用,这也属于线程间的共享资源。
友情链接:
Copyright © 2022 世界杯金靴_足球小子世界杯 - ffajyj.com All Rights Reserved.