程序控制的經典問題:讀者寫者問題
阿新 • • 發佈:2018-11-22
讀者——寫者問題
一個數據檔案被多個程序共享。Reader程序只要求讀檔案,Writer程序要求寫入內容。
合理的同步關係是:
多個讀程序可同時讀;
Writer程序與任何其他程序(包括Reader程序或其他Writer程序)不允許同時訪問檔案。
semaphore rmutex=1,wmutex=1; int readcount=0;//讀者的數量 讀者Reader : begin repeat wait(rmutex); if Readcount=0 then wait(wmutex);//判斷是第一位讀者時,佔用wmutex訊號量 Readcount :=Readcount +1; signal(rmutex); … perform read operation; … wait(rmutex); Readcount :=Readcount -1; if Readcount=0 then signal(wmutex);//判斷是最好一位讀者時,釋放wmutex訊號量 signal(rmutex); until false; end 寫者Writer: begin repeat wait(wmuter) perform write operation; signal(wmutex); until false; end