读写锁

✍ dations ◷ 2025-04-27 09:59:46 #并发控制

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

相关

  • 问答系统问答系统(英语:Question answering),是未来自然语言处理的明日之星。问答系统外部的行为上来看,其与目前主流资讯检索技术有两点不同:首先是查询方式为完整而口语化的问句,再来则是
  • 工业电脑工业电脑(Industrial PC,简称IPC)主要是指用在是专供工业界使用的个人电脑,可作为工业控制器使用。工业电脑基本性能与相容性与同样规格的商用个人电脑相差无几,但是工业电脑更多
  • 苯线磷苯线磷(英语:fenamiphos,也称为克线磷)是一种有机磷酸酯杀虫剂和乙酰胆碱酯酶抑制剂(英语:acetylcholinesterase inhibitor)。
  • Eimeriorina见内文Eimerlida艾美亚目(学名:Eimeriorina或Eimerlida),又名艾美耳亚目、艾美球虫亚目或球胞子虫亚目,是顶复门真球虫目之下的一个亚目。本亚目之下有12科、两个亚科及50多个属
  • 印度尼西亚日治时期荷属东印度日占时期,是指从1942年3月直至1945年第二次世界大战结束,日本帝国一直保持着对印度尼西亚的占领。日本的占领是第一次对于荷兰人在印度尼西亚统治的真正挑战—结束
  • 2017年NBA季后赛2017年NBA季后赛是国家篮球协会(NBA)在2016-17 NBA赛季常规赛完毕后举行的七场四胜制淘汰赛,本届是第71届季后赛。季后赛第一轮在2017年4月15日开打,东西部半决赛在5月1日开打,东
  • 米哈伊尔·阿法纳西耶维奇·布尔加科夫米哈伊尔·阿法纳西耶维奇·布尔加科夫(或译鲍加可夫,俄语:Михаил Афанасьевич Булгаков;1891年5月15日-1940年3月10日)是二十世纪上半叶的一位苏联小说
  • 塞尔日·兰塞尔日·兰(法语:Serge Lang,1927年5月19日-2005年9月12日)是美国数学家。他在1951年由埃米尔·阿廷指导,获得普林斯顿大学的博士学位。因他在代数的工作和他编写的多本教科书(包括
  • Haswell微架构Intel Haswell是英特尔的中央处理器架构,由英特尔的俄勒冈团队负责研发,用以取代Intel Ivy Bridge和Intel Sandy Bridge微架构。 和Ivy Bridge微架构一样,Haswell采用22纳米制
  • 曹尔堪曹尔堪(1617年-1679年),字子愿,号顾庵。江南华亭(今上海市松江)人,籍贯浙江嘉兴。顺治三年(1646年)丙戌科浙江乡试中式举人。顺治九年(1652年)进士。改庶吉士,散馆授编修,官至侍讲学士。顺