读写锁

✍ dations ◷ 2024-09-20 14:36:37 #并发控制

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

相关

  • 异构酶异构酶(英语:isomerase)是一种催化同分异构体转换的酶。异构酶因而催化以下的反应:异构酶是以“(底物)异构酶”这种格式来命名,如脂酰辅酶A脱氢酶。或是以“(底物)(异构酶种类)”
  • 肱二头肌肱二头肌是使到手臂弯曲的肌肉,连接肩胛骨和前臂的桡骨,收缩使到前臂弯曲。英文名“biceps brachii”的意思是“臂的两个头”,因为该肌靠近躯体的一部分分裂为两部分。健美运动
  • 1156年重要事件及趋势重要人物
  • 尸陀林尸陀林或尸陁林(梵语:शीतवन,转写:Śītavana;藏语:.mw-parser-output .uchen{font-family:"Qomolangma-Dunhuang","Qomolangma-Uchen Sarchen","Qomolangma-Uchen Sarchung",
  • 化学变化化学反应是一个或一个以上的物质(又称作反应物)经由化学变化转化为不同于反应物的产物的过程。化学变化定义为当一个分子接触另一个分子合成大分子;或者分子经断裂分开形成两个
  • 大阪市交通局20系电力动车组大阪市交通局20系电力动车组是供大阪市营地下铁使用的通勤型电车,于1984年开始营运。20系电力动车组一共分为五组,主要运行于御堂筋线(21系)、谷町线(22系)、四桥线(23系)、中央线(24
  • 朝日新闻社朝日新闻社(日语:朝日新聞社/あさひしんぶんしゃ  ?)是一家日本报社,主要发行《朝日新闻》,也出版杂志、书籍,举办艺术作品的展览、公演、运动会等活动。创立于1879年(明治12年1月
  • 蓓尔·宝利蓓尔·宝利(英语:Bel Powley,1992年3月7日-),全名伊泽贝尔·多萝西·宝利(Isobel Dorothy Powley),英国女演员。宝利生于伦敦哈默史密斯区,父亲马克·宝利(英语:Mark Powley)是一名演员,母
  • 李希成李希成(1903年-1962年),江苏省扬州宝应县人。李希成为武汉大学法律系第三届毕业生,专攻经济法学。1940年秋,出任四川省特委会审讯组长、国民政府军事委员会调查统计局(简称“军统局
  • 点云点云(point cloud)是指透过3D扫描器所取得之资料型式。扫描资料以点的型式记录,每一个点包含有三维座标,有些可能含有色彩资讯(R,G,B)或物体反射面强度。点云数据除了具有几何位置