常见的乐观锁实现方式有几种

发布时间:2024-08-18 点击:69
常见的乐观锁实现方式有两种,分别是:1、版本号机制;2、cas算法。其中,通过版本号机制实现乐观锁是最经典的方法。版本号机制一般是在数据表中加上一个数据库版本号version字段。
实现方式:
(推荐学习:mysql教程)
1、版本号机制
一般是说在数据表中加上一个数据库版本号version字段,在表述数据被修改的次数当数据被修改时,它的version 值会加1。
如:
当然线程a需要更新数据值时,在读取数据的同时也会读取 version 值,在提交更新时,若刚才读取到的 version 值为当前数据库中的 version 值相等时才更新,否则重试更新操作,直到更新成功。
2、cas 算法
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” 问题;

笔记本i7好还是i5好 笔记本i5和i7哪个好
云服务器和网页服务器的区别吗
一年的云服务器怎么挣钱
虚拟主机机房选哪里好
需变更主体撤销新网站申请
国外商标注册要注意什么
云端服务器安全吗
Visio2010软件如何激活?教你激活Visio2010软件的方法