并发编程bug的源头 2021-07-07

并发编程为什么容易出现问题?它是怎么出问题的?

并发程序幕后的故事
随着硬件技术的发展,CPU、内存和I/O设备迎来了迅猛的发展。然而发展过程中,一直存在一个核心矛盾,CPU和
内存的速度差异,内存和I/O设备之间的速度差异。

CPU是天上一天,内存便是地上一年;内存是天上一天,那么I/O设备是地上10年。  
 木桶效应告诉我们要减小三者之间的差距,才能提高程序的性能。

解决方案,
    1. CPU增加缓存,以均衡与内存的速度差异
    2. 操作系统增加进程、线程,分时复用CPU,进而均衡CPU与I/O设备的速度差异
    3. 编译程序指令重排序   

并发编程的目的是,高效利用CPU和I/O资源,提高程序的运行速度。

为了减少CPU、内存和I/O设备间的速度差异,诞生了缓存线程指令重排序

但是却导致了可见性、原子性和有序性的问题。这便是并发编程bug的源头。

1. 缓存导致的可见性问题
2. 线程导致的原子性问题
3. 指令重排序导致的有序性问题

从CPU单核和多核的方面考虑一下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值