博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程什么时候需要同步,什么时候不需要同步?
阅读量:5994 次
发布时间:2019-06-20

本文共 451 字,大约阅读时间需要 1 分钟。

线程同步是一个很困扰大家的一个问题,在线程中有时需要必须的同步机制来控制程序的运行,但什么时候需要加同步机制,什么地方又不需要这些没必要的同步机制呢?在不需要同步的地方加上了同步机制只会降低程序的效率,所以不必要的地方就一定不要加上同步的代码。
    我们首先要明白,线程在切换之间都做了些什么事情,首先我们要知道,在系统中全局变量是在全局空间分配的,而局部变量是在系统堆栈中分配的,大家注意了,这两点概念很重要的。操作系统会为我们的每一个线程保护寄存器和堆栈现场,也就是说在线程切换的时候操作系统会为我们的线程恢复原来的寄存器和堆栈现场的(懂些汇编可能更容易理解一些)。所以大家一定要明确,虽然多个线程执行的代码相同,但是他们的局部变量的值实际上也是不相同的,因为线程切换的时候操作系统会恢复他们原来的值,所以局部变量一般不需要同步,当然特殊的情况大家就要仔细了。
    这里大家还要注意一点,就是只有函数中的局部变量才是在堆栈上分配空间的,其他的,比如:类的成员变量都不是在堆栈分配空间的,全局变量就更不是了。

转载地址:http://cwtlx.baihongyu.com/

你可能感兴趣的文章
[BZOJ 3170] [TJOI 2013] 松鼠聚会
查看>>
ARM 的异常处理
查看>>
字符串 值、输出效果、转义
查看>>
python类型
查看>>
第八周-学习进度条
查看>>
eigen quick reference
查看>>
Linux命令——screen
查看>>
聊聊从web session的共享到可扩展缓存设计
查看>>
八. python面向对象(反射和内置方法)
查看>>
ViewPager实现引导页
查看>>
int i=1,j=2; int k=i+++j;
查看>>
Debugging OpenResty and Nginx Lua scripts with Zer
查看>>
jetty配置jndi数据源
查看>>
Eclipse更改@Author的属性以及注释模板的一些设置
查看>>
Golang加密系列之MD5
查看>>
在struts-2.2.3.1中加入<s:head theme="ajax"/>这个标签,报错
查看>>
SHOW PROCESSLIST的各个状态说明
查看>>
apache Internal Server Error 解决方法
查看>>
win服务器中安装开源电子邮箱服务端
查看>>
grep命令的用法1
查看>>