一.多线程出现的问题

本文探讨了多线程编程中可能出现的问题,包括由于CPU缓存、分时复用和指令优化导致的可见性、原子性和有序性问题。举例说明了`count += 1`操作在多线程环境下可能产生的不一致结果,并指出解决这些问题对于正确实现多线程至关重要。
摘要由CSDN通过智能技术生成

为什么多线程代码可能会出现问题

现代计算机都为了追求更快的运行,对其做了很多的优化,但是CPU,内存,IO三者还是有很大的差距,为了提高CPU的效率,增加CPU的缓存,操作系统采用了分时复用,编译器增加了指令优化。这些方式虽然增加了CPU执行的效率,但是对于多线程而言,也增加了可见性,原子性,有序性等问题.

1.可见性

在这里插入图片描述

对于多核的计算机,每个CPU都有自己的缓存,数据都是先读取到CPU本地缓存,更新完后再把数据写入到CPU本地缓存,而把缓存中的数据刷新到内存中的时间是不确定的,这样就会导致每个线程读取的数据是不一样的,这就是可见性问题。

2.原子性

在这里插入图片描述
操作系统为了保证cpu执行的效率&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值