- 据我所知,原子指令确保在执行时,没有其他线程可以修改该数据(就像关键部分一样)。我说得对吗?
- 这在硬件上是如何实现的?
- 硬件如何保证这一点?(硬件内部是否生成三个微指令:解锁,修改,锁定?)
- 仅使用互斥锁与使用原子指令之间有什么区别?唯一的区别是指令数量吗(原子指令为 1 条指令,普通互斥锁为多条指令)?
- 指令数量的差异(1 与多)是否能保证正确性(如使用互斥锁)和一致性?
答案1
答案2
在大多数现代 CPU 上,原子操作的工作原理是将受影响的内存地址锁定在 CPU 的缓存中。CPU 在其缓存中独占获取内存地址,然后在操作完成之前不允许任何其他 CPU 获取或共享该地址。