
【Linux】线程安全问题
发布日期:2021-05-10 06:33:36
浏览次数:5
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2023年11月18日 11时18分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
欢迎使用Markdown编辑器
2019-03-28
Modelsim不显示波形
2019-03-28
FPGA出现JTAG下载的错误(Failed)
2019-03-28
使用PLL进行led的简单控制时,仿真波形显示不正常
2019-03-28
归并排序模板
2019-03-28
Birthday Gift
2019-03-28
Nitori and Stack-Tech
2019-03-28
电话列表(前缀树,字典树 典例)
2019-03-28
前缀统计(前缀树、字典树 附典例)
2019-03-28
前缀树(字典树)模板,附典例
2019-03-28
倒水(贪心)
2019-03-28
购物(贪心)
2019-03-28
蓝桥杯--16进制转化为8进制(大数)
2019-03-28
二分查找 & 二分答案 万字详解,超多例题,带你学透二分!!
2019-03-28
二分查找 & 二分答案 ,课后练习题答案。
2019-03-28
金牌厨师HiLin与HJGG(二维前缀 + 二分!)
2019-03-28
Subsequences Summing to Sevens( 前缀和+小技巧!)
2019-03-28
Angry Cows(二分答案——好题!)
2019-03-28
K-clearing(map容器!)
2019-03-28