读写锁

读写锁用于在多进程环境中实现文件的读写同步,防止数据冲突。写锁是排他锁,读锁是共享锁。强制性锁由内核控制,确保锁的存在时阻止读写操作;而建议性锁依赖于程序员遵守,不强制检查锁状态。fcntl()函数用于设置和检查文件锁,包括读锁、写锁和解锁操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用:

(实现文件的读写同步)当一个进程正在读或修改文件的某个部分时,阻止其他进程修改同一文件区。

访问操作:

写入锁——又叫排它锁

读取锁——又叫共享锁

多进程访问
(同一个进程访问只会覆盖已有的锁)

已存在锁	读取锁	写入锁
无	OK	OK
读取锁	OK	NG
写入锁	NG	NG
同一个进程访问只会覆盖已有的锁
在访问之前尝试加锁可以知道文件是否正在被读写。

加锁区域:

文件锁————整个文件上锁

记录锁————文件部分内容上锁

建议性锁:

别名——劝解锁/劝告锁(写锁)和协同锁/协作锁(读锁)。

每个使用上锁文件的进程都要检查是否有锁存在,要尊重已有的锁。

要靠程序员遵守和实现。(不检查是否有锁的情况下可以强行读写)

强制性锁:

——当文件被上锁来进行写入操作时,在锁定该文件的进程释放该锁之前,内核会阻止任何对该文件的读或写访问(open,read,write),每次读写访问都要检查锁是否存在。

本质:

——内核读写文件自动处理。(内核实现,系统开销大,影响性能,兼容性差)

设置:

1.重新挂载mount系统分区———sudo  mount  -o  remount,mand/

mand———允许强制锁定

n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值