什么是CAS机制

Dear 丶 2022-05-28 10:35 308阅读 0赞

参考:

https://www.cnblogs.com/myopensource/p/8177074.html

https://www.jianshu.com/p/e2179c74a2e4

CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。

CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。

更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B。

这样说或许有些抽象,我们来看一个例子:

20180403183316172

CAS的缺点:

1.CPU开销较大

在并发量比较高的情况下,如果许多线程反复尝试更新某一个变量,却又一直更新不成功,循环往复,会给CPU带来很大的压力。

2.不能保证代码块的原子性

CAS机制所保证的只是一个变量的原子性操作,而不能保证整个代码块的原子性。比如需要保证3个变量共同进行原子性的更新,就不得不使用Synchronized了。

3.ABA问题

这是CAS机制最大的问题所在。

现代的处理器都包含对并发的支持,其中最通用的方法就是比较并交换(compare and swap),简称CAS。

compareAndSet调用了unsafe.compareAndSwapInt,这是一个native方法,原理就是调用硬件支持的CAS方法。

发表评论

表情:
评论列表 (有 0 条评论,308人围观)

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

相关阅读

    相关 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并返