1.0 什么是CAS
-
CAS: 全称Compare and swap,字面意思:”比较并交换“,
-
能够比较和交换 某个寄存器中的值 和 内存中的值 ,比较他们是否相等,如果相等一个 则把另一个寄存器中的值和内存进行交换**(因为寄存器一般存临时的值,而内存存的是更长久的值,因此并不关心寄存器所以如果相等就会把这个寄存器给替换掉)**
-
我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。
- 比较 A 与 V 是否相等。(比较)
- 如果比较相等,将 B 写入 V。(交换)
- 返回操作是否成功。
2.0 CAS 伪代码
下面写的代码不是原子的, 真实的 CAS 是一个原子的硬件指令完成的. 这个伪代码只是辅助理解 CAS 的工作流程.
boolean CAS(address