讀者寫者問題三種情況詳細解釋 通俗易懂

2021-10-07 00:03:39 字數 1131 閱讀 5442

說明

p=wait 申請臨界區資源

v=signal 釋放釋放臨界區資源

讀者優先問題:

// 讀者優先問題

// 即只要乙個讀者在讀,後續的其他讀者無論是否在寫者後面都可以讀

//  寫者必須等待,必須等所有讀者都讀完才能寫入

// 互斥讀者與讀者

semaphore rmutex = 1;

// 互斥讀者與寫者,寫者與寫者

semaphore mutex = 1;

// 表示讀者數量,需看成臨界資源,即進來乙個讀者就+1操作

int readcount = 0;

// 讀者程序

void reader()

}void writer()

}void main()

寫者優先問題

// 寫者優先

// 即只要有寫者在寫,無論後續寫者在哪都可以寫,讀者必須等所有寫者寫完才能讀

// 互斥讀者與寫者

semaphore mutex = 1;

// 互斥讀者

semaphore rmutex = 1;

// 互斥寫者

semaphore wmutex = 1;

// 表示是否還有寫者

semaphore readable = 1;

// 讀者數量,寫者數量

int readcount = 0, writecount = 0;

void reader()

void writer()

void main()

讀寫公平:

即按照讀者寫者的先後順序

// 互斥讀者與寫者

semaphore mutex = 1;

// 互斥讀者

semaphore rmutex = 1;

// 只檢測臨界區是否還有寫者

semaphore wmutex = 1;

int readcount = 0;

void reader()

}void writer()

}void main()

讀者寫者問題

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

讀者寫者問題

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

讀者 寫者問題

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