读写锁

✍ dations ◷ 2025-02-24 02:31:23 #并发控制

读写锁是计算机程序的并发控制的一种同步机制,也称“共享-互斥锁”、多读者-单写者锁。多读者锁,,“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。

相关

  • 木质素木质素(拉丁语、英语、德语: Lignin)是一类复杂的有机聚合物,其在维管植物和一些藻类的支持组织中形成重要的结构材料。木质素在细胞壁的形成中是特别重要的,特别是在木材和树皮
  • 辐射对称动物辐射对称动物(学名:Radiata)与两侧对称动物共同组成真后生动物,这些动物的外形呈标准的辐射对称。但其所包括的生物过多、在生物系统发生学上无法构成单系群,加上趋同演化作用,这
  • 中国的科学与文明《中国科学技术史》(英语:Science and Civilisation in China)乃李约瑟研究所李约瑟博士和国际学者们所编著的一套关于中国的科学技术历史的著作。李约瑟在书中列出中国人的发
  • 帕斯卡(符号Pa或Pascal)是国际单位制(SI)的压强单位。在不致混淆的情况下也可简称为“帕”。它等于每平方米一牛顿。以法国学者(数学家、物理学家、化学家、音乐家、宗教家、教育
  • 神乐神乐(かぐら)是日本神道神事之时,奉纳神的歌舞。神乐主要出现在神社的祭礼,日本佛教寺院鲜少举行。样式在平安时代中期完成,现存约90首神乐歌。神社若有“神乐殿”,神乐大多在此举
  • 大象《大象》(英语:Elephant)是由美国导演吉士·云·逊执导,以1999年美国俄勒冈州校园枪击案为题的电影。本片荣获2003年戛纳电影节金棕榈奖。导演吉士·云·逊表示片名《大象》的概
  • 武术家武术家,又叫武者,泛指锻炼武术,且在武术上具有成就的人士。练武的人遍布世界各地,也出现一些知名的流派,如中国功夫、拳击、柔道、剑道、空手道、跆拳道、合气道、泰拳、桑搏、日
  • 崔始源崔始源(朝鲜语:최시원,英语:Choi Si-won,1986年4月7日-),韩国歌手及演员,为韩国流行演唱组合Super Junior及子组合Super Junior-M成员之一,在队内担任中心、副唱。2002年,在首尔被韩国S
  • 法莉达 (埃及王后)法莉达(英语:Farida,出生名为Safinaz Zulficar,阿拉伯语:صافيناز ذوالفقار‎,1921年9月5日-1988年10月16日)是埃及国王法鲁克一世的第一任妻子并担任了10年埃及王后
  • 陶维英陶维英(越南语:Đào Duy Anh;1904年4月25日-1988年4月1日)越南近代学者。他对越南历史、地理、词典、文化和民间文学的研究做出了突出贡献。陶维英出生于清化省,后搬到河东省青威