【Linux】线程安全问题
发布日期:2021-05-10 06:33:36
浏览次数:19
分类:技术文章
本文共 492 字,大约阅读时间需要 1 分钟。
- 线程不安全的现象
- 抢票程序
- 线程不安全的原理
- 结论:线程不安全会导致程序结果的出现二义性
- 举例: ① 假设现在在同一个程序当中有两个线程,线程A和线程B,并且有一个int类型的全部变量,值为10,线程A和线程B在鸽子的入口函数当中都对这样的一个全局变量进行++操作 ② 线程A拥有CPU之后,对全局变量进行++ 操作,并非原子操作,也就是意味着线程A,在执行++的过程当中有可能被打断,假设,线程A刚刚将全局变量的数值10读到CPU的寄存器当中,就被切换出去了;程序计数器当中保存下一条执行的指令,上下文信息当中保存寄存器的值,这两个东西是用来当线程A再次拥有CPU的时候,恢复现场使用的 ③ 这会儿有可能**线程B拥有了CPU资源,对全局变量进行了++,并且将10加成了11,**回写到了内存当中 ④ 线程A再次拥有了CPU资源之后,恢复现场,继续往下执行,从寄存器当中读到的值仍然是10,加完之后就是11,回写到内存当中之后也是11
- 总结:理论上,线程A和线程B对全局变量进行了+1操作,理论上全局变量的值应该变成12,但是,线程程序计数器的结果有可能是11,所以这就是线程不安全
转载地址:https://blog.csdn.net/weixin_43967449/article/details/110194462 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年08月27日 07时13分52秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
2019-05-24
? 精美图文带你掌握 JVM 内存布局
2019-05-24
谈谈go.sum
2019-05-24
tls 1.2 example
2019-05-24
【科创人】快狗打车CTO沈剑:努力不会背叛,承担社会责任的企业胜算高一点点
2019-05-24
GitHub 计划登陆中国,将产生哪些影响与意义?
2019-05-24
2019 我是怎样熬过来的?
2019-05-24
【C++学习计划】深入浅出——变量作用域(Day3)
2019-05-24
SpringBoot与SpringMVC的区别是什么?
2019-05-24
浅谈单点登陆(SSO)
2019-05-24
策略模式
2019-05-24
Spring Boot 实战 入门
2019-05-24
关于web系统整体优化提速总结
2019-05-24
Matlab混入模式(Mixin)
2019-05-24
DDD领域建模基本流程
2019-05-24
稳定性三十六计-幂等设计
2019-05-24
设计模式之适配器模式与外观模式(一)
2019-05-24