我有一些關於* nix系統上的POSIX Pthreads讀寫鎖定的問題,比如Linux。如何在pthreads中阻止讀寫鎖定中的寫入器飢餓
我想知道什麼是讀寫鎖的默認偏差,即它喜歡讀取寫入還是反之呢?它提供了一些API來改變這種默認行爲。
posix pthread是否提供了一些API,以便我們可以更改pthread_rwlock_t以防止作家餓死?從我讀過的內容(如果我錯了,請糾正我),默認實現偏向讀者線程,因此編寫器線程可能面臨飢餓。
我已經閱讀了David Butenhof編寫的使用Posix線程編程的書中rw鎖的示例實現。
我想知道POSIX pthreads如何處理作家線程的匱乏?是否有一些使用我們可以設置讀寫鎖的屬性,以防止寫捱餓(我從來沒有聽說過)?或者用戶不得不處理這個問題?
如果你認爲答案是實現定義的,那麼請舉例說明它是如何在Linux中完成的,因爲那就是我正在尋找的。
請注意,我只想要一個* nix系統的解決方案。不要以爲我很粗魯,但發佈一些特定於Windows的代碼對我來說毫無用處。
謝謝大家的幫助和耐心:)
使用互斥鎖而不是rwlock可以避免這個問題。如果爭用率較低,則在某些實現中(例如從互斥量和條件變量構建rwlock的實現)也會更快。 – jilles 2011-05-15 19:15:36