讀者寫者問題是建立在數據庫訪問模型上的:
例如飛機訂票系統
其中多個進程想讀寫數據庫
為了保證不出錯需要滿足一條:
當一個進程寫的時候,所有的其它進程都不能再讀和寫
實現方法一:
當一個寫進程到來的時候,如果有讀或者寫進程就不進入
當一個讀進程到來的時候,如果沒有讀進程,就進入
也就是讀可以同時,寫是排它的。
問題:試想每個讀進程持續5秒,每2秒進來一個讀進程,這樣寫進程就永遠進不來了
實現方法二:
當一個寫進程來的時候,它只等待現在正在執行的讀進程
當一個讀進程進來的時候,如果有一個寫進程等待,讀進程不進入
也就是寫進程優先,這樣解決了問題,但是效率低下。
相關的還有理發師問題;