您的位置:首页 > 其它

线程和进程的上下文模型区别

2018-02-03 14:16 218 查看
对于传统进程模型来说,其上下文分主要为下面三部分(寄存器值不算在里面):

全局区(用来保存进程的全局对象)
堆(动态分配的内存空间)
栈(保存函数运行时的信息)
而对于线程模型来说,全局区和堆时进程中所有线程共有的,因此,线程需要保存的上下文只有一个

对于现代C++来说,有一种变量类型叫做线程本地变量(thread local)
这种情况下,我觉得不排除线程需要有自己的全局区用来区分不同线程中该变量的值

也就意味着,当CPU在时钟中断时切换线程只需要保存当前线程的栈(甚至不需要,如果内存空间够的话)到虚拟内存,然后将需要运行的线程的栈回复到内存中,获取该线程上一次运行的位置,从该位置继续运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: