乐观锁、悲观锁、读写锁、互斥锁之间的关系

乐观锁、悲观锁

同一维度的概念,都是从数据访问的角度来说。所以经常出现在数据库相关问题中、
即当数据同时被多个对象访问了,应该持什么态度来对数据进行保护
悲观锁认为,数据被访问,对方很可能要修改这个数据。所以在此思想的引导下,数据被访问时,不管是读还是写,步步加锁。严格排斥其他对象的访问。
乐观锁认为,数据被访问,对方不大可能要修改这个数据。所以在此思想的引导下,一个对象读这个数据,不会排斥其他的访问(包括读和写),只有在自己写的时候,通过cas的方式,确定自己写的时候,没人动过这个数据。有人动过,则取消重读再重试。
这两种锁,是两种思想。

互斥锁、读写锁

这两个是同一维度的概念,都是从“读写行为”本身角度来说的,所以经常出现的编程相关问题中:即当读写一个变量时,其他人也要读写此变量,应该制定怎样的规则,不至于让数据乱套。
互斥锁的规则,即所有单个的读、写行为互斥、资源独占
,读的时候别人不能读也不能写。写的时候,别人不能读也不能写。
读写锁的规则,读读不互斥,凡是带写的操作互斥。读的时候别人可以读但不能写。写的时候,别人不能读也不能写。
这两种锁,是实实在在的锁。

总结

互斥锁其实很符合悲观锁的思想,但二者不能混为一谈。毕竟描述角度不一样,就像老婆做的饼和老婆饼一样,虽然都叫饼,老婆做的饼是一类饼,老婆饼是特定一种商品。
读写锁跟乐观锁更是没有一毛钱关系。乐观锁没有锁定任何数据,只是通过对比+重试实现数据不乱套。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Keep up

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值