CAS概念
CAS指令是CPU的一个指令,它的作用是将指定内存地址的内容与所给的某个值相比,如果相等,则将其内容替换为指令中提供的新值,如果不相等,则更新失败。这一比较并交换的操作是原子的,不可以被中断。CAS是通过硬件命令保证了原子性
从内存领域来说这是乐观锁,因为它在对共享变量更新之前会先比较当前值是否与更新前的值一致,如果是,则更新,如果不是,则无限循环执行(称为自旋),直到当前值与更新前的值一致为止,才执行更新。
CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3fb90d2b724269487e6865d6f3eb00bd.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e5e2309262524bc7421ca2e3198afd5d.png)
CAS存在的问题
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d2a6b8c35f86a742d225cca3258af392.png)