社区
肖海鹏的课程社区_NO_6
多线程与线程池技术详解
帖子详情
Lock的读锁和写锁
XiaoGong1688
2023-01-12 21:45:40
课时名称
课时知识点
Lock的读锁和写锁
读、写分离,使用不同级别的锁进行处理
...全文
353
回复
打赏
收藏
Lock的读锁和写锁
课时名称课时知识点Lock的读锁和写锁读、写分离,使用不同级别的锁进行处理
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
读
锁
和
写
锁
读
锁
(Shared
Lock
)和
写
锁
(Exclusive
Lock
)是数据库中常见的
锁
类型,用于控制并发读
写
操作的访问权限。而
写
锁
适用于只允许一个事务修改数据的场景,保证了
写
操作的原子性和一致性。需要注意的是,
读
锁
和
写
锁
是在事务中通过数据库管理系统(如MySQL)自动实现的,开发者无需手动操作
锁
。数据库管理系统会根据事务的隔离级别和具体的
锁
策略来控制
锁
的获取和释放。在使用
读
锁
和
写
锁
时,需要根据具体的业务需求和隔离级别来选择合适的
锁
,以确保数据的一致性和并发性。
十三、
读
锁
和
写
锁
读读场景下不会出现线程安全问题,读
写
、
写
写
场景下会出现线程安全问题。在没有
写
操作的时候,多个线程去读不会产生问题,但是当有一个线程想要去
写
操作时,就不应该有其他读线程和
写
线程。读
写
锁
顾名思义就是把一把
锁
分为
读
锁
和
写
锁
两部分,
读
锁
允许多个线程共同获得,
写
锁
只允许一个线程获得。💡 问题:读操作为什么要加
锁
?在读取数据的方法中如果要那这个数据做一些业务处理,此时没有加
锁
被其他线程给改变了,就会造成类似于“脏读”的现象。内部维护了两个API规范,
读
锁
和
写
锁
。线程进入
读
锁
的条件:线程进入
写
锁
的条件:读
写
锁
有以下三个
【并发编程篇】
读
锁
read
Lock
()和
写
锁
write
Lock
()
方法返回一个
读
锁
,允许同时获取该
锁
,以进行并发读取操作。如果当前已有一个
写
锁
或其他线程正在请求
写
锁
,则
读
锁
会被阻塞,直到所有
写
锁
请求完成并释放
锁
为止。
读
锁
和
写
锁
之间是互斥的。方法返回一个
写
锁
,只允许获取该
锁
,以进行
写
入操作。如果当前已有一个
读
锁
或其他线程正在请求
读
锁
,则
写
锁
会被阻塞,直到所有
读
锁
请求完成并释放
锁
为止。
写
锁
是独占的,同一时间只能有一个线程持有
写
锁
。在使用读
写
锁
时,应该根据具体的业务场景和需求选择适当的
锁
类型。如果共享资源的读取操作远远超过
写
入操作,那么使用读
写
锁
可以提高系统的并发性能。
MySQL中的
读
锁
和
写
锁
转载自 http://www.hollischuang.com/archives/1728 在数据库的
锁
机制中介绍过,数据的
锁
主要用来保证数据的一致性的,数据库的
锁
从
锁
定的粒度上可以分为表级
锁
、行级
锁
和页级
锁
。在我的博客中重点介绍过MySQL数据库的行级
锁
。这篇文章主要来介绍一下MySQL数据库中的表级
锁
。 本文提到的
读
锁
和
写
锁
都是MySQL数据库的MyISAM引擎支持的表
锁
的。而对于...
文件
锁
(二)——文件
锁
的
读
锁
和
写
锁
文件
锁
的
读
锁
和
写
锁
对文件加
锁
时可以加两种
锁
,分别是“读文件
锁
”和“
写
文件
锁
”,简称
读
锁
和
写
锁
。
读
锁
、
写
锁
之间关系
读
锁
和
读
锁
共享:可以重复加
读
锁
,别人加了
读
锁
在没有解
锁
之前,我依然可以加
读
锁
,这就是共享。
读
锁
和
写
锁
互斥:别人加了
读
锁
没解
锁
前,加
写
锁
会失败,反过来也是如此。 加
锁
失败后两种处理方式: 阻塞,直到别人解
锁
然后加
锁
成功为止。 出错返回,不阻塞
写
锁
与
写
锁
互斥:别人加了
写
锁
在没有解
锁
前,不能加
写
锁
,加
写
锁
会失败。 加
锁
失败后两种处理方式: 阻塞,直
肖海鹏的课程社区_NO_6
1
社区成员
28
社区内容
发帖
与我相关
我的任务
肖海鹏的课程社区_NO_6
复制链接
扫一扫
分享
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章