程序同步 讀者與寫者的問題

2021-08-30 19:32:20 字數 1052 閱讀 5945

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...

經典程序同步問題 讀者寫者

讀者 寫者問題 問題描述 有讀者和寫者兩組併發程序,共享乙個檔案,當兩個或以上的讀程序同時訪問共享資料時不會產生 但是如果某個寫程序和其他程序 讀程序或寫程序 同時訪問共享資料時則可能導致資料不一致的錯誤。簡單來說,你可以乙個文件開啟好多,但是你不能邊讀邊寫。從上述來看,得滿足以下幾個要求。允許多個...

經典程序同步問題 讀者寫者問題

問題描述 有讀者和寫者兩組併發程序,共享乙個檔案,當兩個或以上的讀程序同時訪問共享資料時不會產生 但若某個寫程序和其他程序 讀程序或寫程序 同時訪問共享資料時則可能導致資料不一致的錯誤。因此要求 允許多個讀者可以同時對檔案執行讀操作 只允許乙個寫者往檔案中寫資訊 任一寫者在完成寫操作之前不允許其他讀...