开发者社区> 问答> 正文

什么是CAS

什么是CAS

展开
收起
问问小秘 2020-02-17 11:37:00 462 0
1 条回答
写回答
取消 提交回答
  • cas的全称Compare And Swap。比较交换操作,是乐观锁的一种实现。核心的思想就是给需要读取的值加上一个状态,比如版本号,然后写入的时候通过比较版本号来发现值有没有被修改过,如果被修改过,那么说明之前读入的值没用了,不做写入。

    举个例子:比如A=1,确定A在内存中的数据V,接着操作A得到了一个变量B,比较V和A的是不是相等,如果相等可以认为A没有被修改过,把B写入,也叫交换,否则不行。

    缺点:ABA问题,就是内存中的那个V其实被其他线程修改成了B,然后有修改了回来变成A,这样t1回来的时候,发现还是A,认为没有被修改,其实是被修改过的 注意,CAS是一个原子操作。

    2020-02-17 11:37:25
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载