writer1()
}
writer2()
}
reader1()
count++;
v(mutex);
讀;p(mutex);
count--;
if(count == 0)//如果是最後乙個讀者,釋放檔案
v(mutex);}}
reader2()
count++;
v(mutex);
讀;p(mutex);
count--;
if(count == 0)
v(mutex);}}
例:橫跨峽谷有一根繩索,猴子通過繩索過峽谷。只要他們朝著相同的方向,同一時刻可以有多隻猴子通過。但如果相反方向同時有猴子通過則會產生死鎖(假設一直猴子無法從另乙隻鉤子身上翻過去)。如果乙隻猴子想過峽谷,必須看是否有相反方向的猴子通過。請用p,v操作解決問題。分析:只有讀者
左猴團右猴團第一只:橋占用了嗎?
中間猴子:只增加數量
最後乙隻:釋放橋資源
第一只:橋占用了嗎?中間猴子:只增加數量
最後乙隻:釋放橋資源
left()
count_l++;
v(mutex_l);
過橋;p(mutex_l);
count_l--;
if(count_l == 0)
v(mutex_l);}}
right()
count_r++;
v(mutex_r);
過橋;p(mutex_r);
count_r--;
if(count_r == 0)
v(mutex_r);}}
讀者和寫者問題 程序同步
出處 http dantvt.spaces.live.com 讀者 寫者問題 寫者優先與公平競爭 多程序對共享資源互斥訪問及程序同步的經典問題 設有一檔案f,多個併發讀程序和寫程序都要訪問,要求 1 讀寫互斥 2 寫寫互斥 3 允許多個讀程序同時訪問 採用記錄型訊號量機制解決 較常見的寫法 sema...
經典程序同步問題 讀者寫者
讀者 寫者問題 問題描述 有讀者和寫者兩組併發程序,共享乙個檔案,當兩個或以上的讀程序同時訪問共享資料時不會產生 但是如果某個寫程序和其他程序 讀程序或寫程序 同時訪問共享資料時則可能導致資料不一致的錯誤。簡單來說,你可以乙個文件開啟好多,但是你不能邊讀邊寫。從上述來看,得滿足以下幾個要求。允許多個...
經典程序同步問題 讀者寫者問題
問題描述 有讀者和寫者兩組併發程序,共享乙個檔案,當兩個或以上的讀程序同時訪問共享資料時不會產生 但若某個寫程序和其他程序 讀程序或寫程序 同時訪問共享資料時則可能導致資料不一致的錯誤。因此要求 允許多個讀者可以同時對檔案執行讀操作 只允許乙個寫者往檔案中寫資訊 任一寫者在完成寫操作之前不允許其他讀...