ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

概念-乐观锁、悲观锁

2021-06-05 15:02:42  阅读:205  来源: 互联网

标签:事务 加锁 locks 乐观 概念 悲观 共享


听到 乐观锁、悲观锁的概念,搜了下,摘要出为能理解的尽量短的文字说明:

 

概念

悲观锁:正常的经典使用方式是叫悲观锁,先取锁,成功取得后才做操作(不论是读还是写)。

乐观锁:乐观并发控制相信事务之间的数据竞争(data race)的概率是比较小的,因此尽可能直接做下去,直到提交的时候才去锁定,所以不会产生任何锁和死锁。

 

 

其他说明

乐观锁,提交的时候,如果冲突,则返回给用户异常信息,让用户决定如何去做。

 

悲观锁主要分为共享锁 和排他锁

  • 共享锁【shared locks】又称为读锁,简称 S 锁。顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。
  • 排他锁【exclusive locks】又称为写锁,简称 X 锁。顾名思义,排他锁就是不能与其他锁并存,如果一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁。获取排他锁的事务可以对数据行读取和修改。

这么看自己实际使用的时候,普通的锁,内部应该就是个排他锁;而读写锁似乎内部一个排他锁和一个共享锁组成,读的加锁和解锁过程应该是用了内部共享锁,写的加锁和解锁则应该是用了内部的排他锁。

 

怀疑似乎这概念应该是 从java的 CAS  包的实现传播开的

参考

主要参考摘录自:https://www.jianshu.com/p/d2ac26ca6525

标签:事务,加锁,locks,乐观,概念,悲观,共享
来源: https://www.cnblogs.com/xiarl/p/14852759.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有