什么是CAS

25 篇文章 1 订阅
7 篇文章 1 订阅

1、什么是CAS

              CAS : compare and swap 比较和交换。
            
              CAS 在没有锁的情况下,可以保证多个线程对一个值的更新。
              

 ABA 问题: 中间 改过值,但最终又回到0 了。例如:

        原值:0

        线程1:读取 0, 要将0 改为 1 。但没改之前,发现以下操作,所以线程1在将0改为1时,这个0已经不是之前的0 了。

        线程2: 读取 0,将值改为 2。       

        线程3:  读取2,将值改为 0。  

ABA问题 的简单理解:你的女朋友在离开你的这段儿时间经历了别的人,自旋就是你空转等待,一直等到她接纳你为止。

ABA 问题解决方法:加版本号。基础类型简单值不需要版本号

2、CAS底层原理

最终实现(依赖于硬件的混编指令):lock cmpxchg  

cmpxchg 指令作用:cas修改变量值。 但该指令为 非原子操作。

lock 指令作用 : 在执行cmpxchg(比较修改)指令时,其它cpu无法介入。

3、使用

cas(v, a, b) ,变量v,期待值a, 修改值b

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值