读写锁

✍ dations ◷ 2025-07-05 11:48:02 #并发控制

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

相关

  • 咳嗽药止咳药是指治疗咳嗽的药品,通常为片状(亦有含化的)、溶液和混悬液。部分止咳水含有可待因或麻黄碱,过量服用会使人产生欣快感,故被滥用者称为摇头水),泛指用于止咳的所有药水,包括医
  • 梗阻性尿路症梗阻性尿路症(Obstructive uropathy)是正常尿液流动的结构或功能障碍,有时导致肾功能不全(梗阻性肾病)。这是一个非常宽泛的术语,并不意味着位置或病因。它可以由尿道的任一点
  • 被取代的科学理论此条目列出曾获得广泛共识的理论及学说,但被现今科学认定为现实的不完全或错误的解读。因此伪科学和边绿科学等未曾获广泛共识的理论不算在内。另外也不包括李森科主义等部分
  • 天择自然选择(英语:natural selection,传统上也译为天择)指生物的遗传特征在生存竞争中,由于具有某种优势或某种劣势,因而在生存能力上产生差异,并进而导致繁殖能力的差异,使得这些特征
  • 乙碲醇乙碲醇(分子式:CH3CH2TeH),是一种碲醇类的有机化合物,常见碲醇之一,结构上由乙醇中的氧原子被碲替代得到。常温下为黄色澄清油状液体,不溶于水,以具有高度刺激性腐臭气味。乙碲醇,和
  • 加工肉品肉类食物,或者简称肉类或荤菜,是从各种动物身上可供食用的肉及一些其他组织,经过不同程度及方法的加工,成为不同种类的肉类食物。常见的肉类包括猪肉、牛肉、羊肉以及鸡肉、鸭肉
  • Sipuncula见内文星虫动物(学名:Sipuncula或Sipunculida)是海洋底栖的对称无环节动物,分布与生活环境及生活方式与螠类相似。根据不同的分类或估计方式,现时物种从144到300种不等。比较知名
  • 唐代宗代宗 (原定为唐代宗李豫(726年11月11日-779年6月10日),唐肃宗李亨的嫡长子。初名俶,小名冬郎,原封广平郡王,后改封广平王、楚王、成王,天可汗,唐朝第11代皇帝(不计武则天),在位17年(762年
  • 过氧化铀过氧化铀(UO4·nH2O) 是一种浅黄色, 可溶解的氧化铀。它被发现在浓缩铀一个阶段的核燃料循环,那时是粗制铀准备通过在地浸和树脂离子交换系统的时候。这种化合物,也可以表达为
  • 布拉杰·库马尔·尼赫鲁布拉杰·库马尔·尼赫鲁(英语:Braj Kumar Nehru,印地语:ब्रज कुमार नेहरू,1909年9月4日-2001年10月31日),MBE,印度政治人物,首任印度总理贾瓦哈拉尔·尼赫鲁的侄子,曾于1