CAS(compare and swap) 比较并交换,有三个操作数,内存地址V ,预期值B,要替换得到的目标子A。
CAS指令执行时,比较内存地址V与预期值B是否相等,若相等则将A赋给B,(不相等则会循环比较直到相等)整个比较赋值操作是一个原子操作。
CAS缺点:
(1)循环时间开销大:当内存地址V与预期值B不相等时会一直循环比较直到相等;
(2)只能保证一个共享变量的原子操作;
(3)如果一个变量V初次读取的时候是A值,并且在准备赋值的时候检查到它仍然是A值,那么我们就能说明它的值没有被其他线程修改过吗?很明显不是,因为在这段时间内它的值可能被改为其他值,然后又被改回A,那CAS操作就会认为它从来没被改过,这个问题就被称为 CAS 操作的“ABA” 问题;
以上就是常见的乐观锁实现方式有几种的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《乐观锁》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。