读写锁

✍ dations ◷ 2025-06-09 10:43:01 #并发控制

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

相关

  • 适应度适应度(英语:Fitness),又可称适存度或生殖成就,是生物学,特别是群体遗传学、数理生物学中用来描述拥有某一特定基因型的个体,在繁殖上的成功率或能力。假如带有不同基因型的个体拥
  • 浩室音乐House(中文多称浩室)是一种电子音乐风格。最早的浩室音乐源自于美国1980年代初期到中期。House一字是出自于芝加哥当代知名的舞厅“仓库”(Warehouse),当时驻场DJ法兰奇‧那寇斯
  • 卡胡卡胡是一位下埃及统治者,在巴勒莫石碑中被提及。由于考古学家没有发现其他证据,他可能是神话中的国王,甚至可能是完全虚构的统治者。
  • m ssup−2/sup米每二次方秒、米秒平方,是国际单位制中加速度的单位。这个单位是由基本单位中的长度单位米和时间单位秒得到的导出单位。记作m/s2、m·s−2或m s−2。加速度是用来描述速度
  • 白三烯D4白三烯D4(英语:Leukotriene D4)是白三烯的一种,在体内具有支气管收缩(英语:bronchoconstriction)、血管收缩、平滑肌收缩、增加血管通透性(英语:vascular permeability)等功能。医学导
  • 美军第14航空队第十四航空队(英语:Fourteenth Air Force),是美国空军太空司令部下属的一个编号航空队,指挥部位于加利福尼亚州的范登堡空军基地。该部队于1943年3月5日成立于中国昆明,为第二次世
  • 中密歇根大学中密歇根州立大学 (Central Michigan University "CMU") 是美国的一所州立大学,位于 密歇根州芒特普莱森特(英语:Mount Pleasant)。有将近27,000名学生,其中将近20,000人为大学部
  • 博克斯卡号轰炸机博克斯卡号轰炸机(英语:Bockscar)有时称为“博克的车”(Bock's Car),是美国陆军航空队一架B-29轰炸机的名字,这架轰炸机就是促使第二次世界大战结束,于1945年8月9日在日本的长崎市投
  • 丹·费根丹·费根(英语:Dan Fegan,1962年-2018年2月25日),美国体育经纪人,现NBA职业经纪人排名第6位。他毕业于耶鲁大学法学院,在洛杉矶建立了一间律师事务所,并且在佩波戴恩大学法学院教授体
  • 约翰·吉尔伯特·贝克约翰·吉尔伯特·贝克(英语:John Gilbert Baker)(1834年1月13日-1920年8月16日)是英国植物学家。贝克出生于北约克郡基斯堡,从1866年至1899年在皇家植物园的标本馆工作,从1890年开始