(面试经典问题之原子操作篇)原子操作CAS与锁实现

一、什么是原子操作

原子操作(Atomic Operation)是指在多线程并发编程中,作为一个不可分割的单元执行的操作。无论操作过程中是否有其他线程或进程的干扰,它都会以整体的方式执行完毕。换句话说,原子操作在执行时要么完全完成,要么完全不做,过程中不会被中断,并且中间状态也不会暴露给其他线程。

原子操作的关键特点包括:

  1. 不可分割性:在执行过程中,操作不会被其他线程或进程打断。
  2. 一致性:无论操作的执行顺序如何,结果都是一致的。
  3. 高效性:因为原子操作不需要使用锁(或者使用非常轻量的锁),所以它比传统的锁机制要高效,特别是在高并发的场景中。

这些特性可以总结为“原子性”,用一句话讲就是要么都做要么还没做,不会让其他核心看到执行的中间状态。

二、如何实现原子性

单处理器单核:只需要保证指令不被打断(该场景比较简单,不细说)

多处理器或多核:除了不被打断之外,还需避免其他核心操作相关的内存空间。通过lock指令,以往的lock指令是锁总线,避免所有内存的访问,现在的lock指令只需阻止其他核心对相关内存空间的访问。

三、存储体系结构——cpu cache 

cpu cache即cpu缓存,它的作用是为了解决cpu运算速度与内存访问速度不匹配的问题,具体的结构和访问时间如图:

在cpu cache基础上,cpu读写数据有两种模式,一种是写直达(write-through),即cpu向缓存写入数据时,数据会同时写入内存,即每次缓存更新时内存也同步更新。该策略的优点在于保证了缓存与内存之间的数据一致性,但由于每次更新都要写入内存,会导致性能开销大,会增加延迟。另一种模式是写回(write

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值