[討論] Readers–writer lock

作者: sb710031 (@@)   2016-12-05 16:28:35
查了一下 wiki 只有給 Read-preferring RW locks
而查了一下其它的 好像非 Read-preferring RW locks 都相當複雜
(如: http://lass.cs.umass.edu/~shenoy/courses/fall08/lectures/Lec11.pdf)
所以自己想了一個方法 想請教是否會有問題
基本上 有一個 mutex g 當locked時 表示有人在寫或有人想寫在等
有一個 atomic integer b 表示在讀的人數
http://imgur.com/a/eTzXW
重點在於 start read 結束時 reader 對b+=1 而且做完這個動作後 看到g 是unlocked的
這會確保 如果有比這個read 還早想 write的人 這個read就會等到那個write結束
才read 所以不會 read-preferring 不過似乎有一點 write-preferring
因為當 write的一結束 一堆read做b++的動作如果不夠快 就會要等下一個 write
所以應該是適合 write 少但重要 不能被read 卡住的情境
請多多指教 謝謝
作者: Caesar08 (Caesar)   2016-12-05 16:38:00
其實你可以寫個程式測測看
作者: CoNsTaR ((const *))   2016-12-05 16:48:00
真的必須嚴謹的話還是找個 proof assistant 來證一下吧…

Links booklink

Contact Us: admin [ a t ] ucptt.com