什么是CAS

迷南。 2023-09-28 18:26 96阅读 0赞

1、什么是CAS

CAS : compare and swap 比较和交换。

CAS 在没有锁的情况下,可以保证多个线程对一个值的更新。
99cc9c2119934a1b8924978a6a7c4e8f.png

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 条评论,96人围观)

还没有评论,来说两句吧...

相关阅读

    相关 CAS 什么?优缺点

    CAS 简单介绍:比较并交换(compareAndSet),将当前工作内存的值与主内存进行比较,如果一致则进行交换,不一致则继续读取主内存最新的值,下面给出 CAS 简单使用的

    相关 什么CAS

    CAS 是 Compare-And-Swap(比较并交换)的缩写,它是一种并发编程中的原子操作,用于实现多线程环境下的数据同步和线程安全。CAS 操作涉及三个主要步骤:比较一个

    相关 什么CAS

    1、什么是CAS CAS : compare and swap 比较和交换。 CAS 在没有锁的情况下,可以保证多个线程对一个值的更新。 ![99cc9c

    相关 什么CAS

    CAS,全称为Compare and Set,即比较-设置。假设有三个操作数: 内存值V、旧的预期值A、要修改的值B,当且仅当预期值A和内存值V相同时,才会将内存值修改为B并返