读写锁

✍ dations ◷ 2025-08-02 01:26:08 #并发控制

读写锁是计算机程序的并发控制的一种同步机制,也称“共享-互斥锁”、多读者-单写者锁。多读者锁,,“push lock”) 用于解决读写问题(英语:readers–writers problem)。读操作可并发重入,写操作是互斥的。

读写锁通常用互斥锁、条件变量、信号量实现。

某些读写锁允许在读模式与写模式之间升降级。

读写锁可以有不同的操作模式优先级:

Michel Raynal(英语:Michel Raynal)使用两把互斥锁与一个整数计数器实现。计数器b跟踪被阻塞的读线程。互斥锁r保护b,供读者使用。互斥锁g (指"global")确保写操作互斥。伪代码:

Begin Read

End Read

Begin Write

End Write

实现是读操作优先。:76

可使用条件变量c与普通的互斥锁m、整型计数器r(表示正在读的个数)与布尔标志g(表示正在写)来实现读写锁。

lock-for-read操作:

lock-for-write操作:

lock-for-read与lock-for-write各自有自己的逆操作。unlock-for-read通过减量r并在r变为0时通知c。unlock-for-write设置w为false并通知c。

SRWLock,见Windows操作系统API,从Windows Vista开始.

读写锁(Slim reader/writer,SRW, lock)用于进程内的线程间同步。 SRW既不是公平的也不是先进先出的。读写锁数据结构的内部实现就是一个指针。读写锁的性能较临界区有很大的提升,这是因为读写锁是基于原子操作,关键段是基于event内核对象的,从用户模式到内核模式的切换占用了大量的时钟周期。相关API:

read-copy-update (RCU)算法是读写锁的一种替代实现。RCU对读操作是无等待。Linux内核实现了很少写操作的一种RCU叫做seqlock。

相关

  • TCP协议传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成
  • 卡洛斯·加西亚卡洛斯·波利斯蒂科·加西亚(Carlos Polistico Garcia) (1896年11月4日-1971年6月14日) 菲律宾教师、诗人、演说家、律师、公务员、政治经济学家和游击队领袖。第八任菲律宾
  • 开心快乐是一种感受良好时的情绪反应,一种能表现出心理状态的情绪。而且常见的成因包括感到对健康、安全、爱情等之满足。快乐最常见的表达方式就是笑。通常我们认为达到快乐,是需
  • 格力格力可以指:
  • 内瓦尔人内瓦尔人是一群位于尼泊尔之加德满都峡谷的原住民。根据尼泊尔的2001年的人口普查,内瓦尔人的总人口为1,245,232人,是该国的第六大民族,占全国人口的5.48%。尼瓦尔人史前就生活
  • 新亭车辆基地新亭车辆基地(朝鲜语:신정차량사업소/新亭車輛事業所  */?)是首尔交通公社位于首尔阳川区的一个车辆段,在首尔地铁2号线新亭支线附近。这个车辆段主要用于首尔地铁2号线的2000
  • 第42届奥斯卡金像奖第42届学院奖颁奖典礼于1970年4月7日在洛杉矶的多萝西·钱德勒大厅(英语:Dorothy Chandler Pavilion)举行,本次颁奖典礼并没有专门设置主持人。由约翰·施莱辛格执导,达斯汀·霍
  • 常应文常应文,山西榆社(今山西榆社)人,明朝政治人物。进士出身。嘉靖十一年,登进士。曾于1532年接替曹煜任上海县知县一职,1534年由杜鍷接任。1556年接替刘本学再任上海县知县一职,1558年
  • 欧尼·麦登欧文·文森特·麦登(Owen Vincent Madden,1891年12月18日-1965年4月24日)被称为欧尼·麦登(Owney Madden),绰号“杀手”(The Killer),是曼哈顿主要的黑社会人物,最著名的是他在禁酒令期
  • 祜塞祜塞(满语:ᡥᡡᠰᡝ,穆麟德:,太清:;1628年3月3日-1646年3月22日),爱新觉罗氏,追尊清太祖努尔哈赤之孙,礼烈亲王代善第八子。祜塞生于天聪二年正月二十八日(1628年3月3日)。顺治二年(1645年),