百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> 常见的悲观锁实现方式有几种
分享文章到:

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

发布时间:09/01 来源:未知 浏览: 关键词:

常见的悲观锁实现方式有两种,离别是: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” 问题;

以上就是常见的悲观锁实现方式有几种的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有154人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板