讀者寫者問題

2021-09-28 16:00:45 字數 832 閱讀 8865

一、什麼是讀者寫者問題

1.什麼是讀者寫者?

乙個資料物件若被多個併發程序所共享,且其中一些程序只要求讀該資料物件的內容,而另一些程序則要求寫操作,把只想讀的程序稱為「讀者」,而把要求寫的程序稱為「寫者」

2.對讀寫操作的限制條件?

二、寫者優先方案

1.注意的問題:

(1)乙個讀者申請進行讀操作時已有另一寫者在等待訪問共享資源,則該讀者必須等到沒有寫者處於等待狀態後才能開始讀操作。

(2)當有讀程序正在讀共享檔案時,有寫程序請求訪問,這時應禁止後續讀程序的請求,等待到已在共享檔案的讀程序執行完畢則立即讓寫程序執行,只有在無寫程序執行的情況下才允許讀程序再次執行。

(3)有寫者在寫的時候,新來的寫者必須等待。

2.實現過程(**講解):

上面提到,讀者在申請讀操作時,若有寫者在等待,那麼它必須等到沒有寫者的時候,才能開始讀操作。所以,這裡要設定乙個變數來記錄處於等待狀態的寫者,當這個變數=0時,讀者才可以進行讀操作。

三、讀者優先方案

當前若有寫者在排隊,那麼在寫者後來的讀者會直接進入讀者佇列,相當於排到寫者的前面去了,直到後面沒有讀者進入,並且當前讀者讀完的時候,寫者才能寫。

四、讀者寫者公平方案

讀寫優先順序相同

當寫者在排隊時,後面來的讀者會被阻塞,就是不讓它們插隊,當前讀者讀完以後就立馬輪到寫者寫了。

讀者寫者問題

生產者消費者問題一樣,讀者寫者也是乙個非常著名的同步問題。讀者寫者問題描述非常簡單,有乙個寫者很多讀者,多個讀者可以同時讀檔案,但寫者在寫檔案時不允許有讀者在讀檔案,同樣有讀者在讀檔案時寫者也不去能寫檔案。上面是讀者寫者問題示意圖,類似於生產者消費者問題的分析過程,首先來找找哪些是屬於 等待 情況。...

讀者寫者問題

問題簡述 讀者 寫者問題的讀寫操作限制 包括讀者優先和寫者優先 1 寫 寫互斥,即不能有兩個寫者同時進行寫操作。2 讀 寫互斥,即不能同時有乙個執行緒在讀,而另乙個執行緒在寫。3 讀 讀允許,即可以有乙個或多個讀者在讀。讀者優先的附加限制 如果乙個讀者申請進行讀操作時已有另乙個讀者正在進行讀操作,則...

讀者 寫者問題

讀者 寫者問題 讀者 寫者問題 readers writers problem 也是乙個經典的併發程式設計問題,是經常出現的一種同步問題。計算機系統中的資料 檔案 記錄 常被多個程序共享,但其中某些程序可能只要求讀資料 稱為讀者 reader 另一些程序則要求修改資料 稱為寫者 writer 就共享...