[討論] Readers–writer lock

看板C_and_CPP作者 (@@)時間7年前 (2016/12/05 16:28), 7年前編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
查了一下 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 卡住的情境 請多多指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.167.42 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1480926518.A.3D4.html

12/05 16:38, , 1F
其實你可以寫個程式測測看
12/05 16:38, 1F
有寫了 不過怕有太特別的例外 ※ 編輯: sb710031 (140.113.167.42), 12/05/2016 16:42:49

12/05 16:48, , 2F
真的必須嚴謹的話還是找個 proof assistant 來證一下吧…
12/05 16:48, 2F
文章代碼(AID): #1OHIKsFK (C_and_CPP)