一、什么是原子操作
原子操作(Atomic Operation)是指在多线程并发编程中,作为一个不可分割的单元执行的操作。无论操作过程中是否有其他线程或进程的干扰,它都会以整体的方式执行完毕。换句话说,原子操作在执行时要么完全完成,要么完全不做,过程中不会被中断,并且中间状态也不会暴露给其他线程。
原子操作的关键特点包括:
- 不可分割性:在执行过程中,操作不会被其他线程或进程打断。
- 一致性:无论操作的执行顺序如何,结果都是一致的。
- 高效性:因为原子操作不需要使用锁(或者使用非常轻量的锁),所以它比传统的锁机制要高效,特别是在高并发的场景中。
这些特性可以总结为“原子性”,用一句话讲就是要么都做要么还没做,不会让其他核心看到执行的中间状态。
二、如何实现原子性
单处理器单核:只需要保证指令不被打断(该场景比较简单,不细说)
多处理器或多核:除了不被打断之外,还需避免其他核心操作相关的内存空间。通过lock指令,以往的lock指令是锁总线,避免所有内存的访问,现在的lock指令只需阻止其他核心对相关内存空间的访问。
三、存储体系结构——cpu cache
cpu cache即cpu缓存,它的作用是为了解决cpu运算速度与内存访问速度不匹配的问题,具体的结构和访问时间如图:

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

最低0.47元/天 解锁文章
86万+

被折叠的 条评论
为什么被折叠?



