讀者寫者問題

2021-09-04 12:20:24 字數 696 閱讀 9243

在編寫多執行緒的時候,有一種情況十分常見。那就是,有些公共資料修改的機會比較少。相比較改寫,它們讀的機會高很多。通常而言,在讀的過程中,往往伴隨著查詢的操作,中間的耗時很長。給這種**段加鎖,會極大的降低我們程式的效率。為此,我們有一種方法,就叫做讀寫鎖

當前鎖狀態

讀鎖請求(讀者)

寫鎖請求(寫者)

無鎖可以

可以讀鎖

可以阻塞

寫鎖阻塞

阻塞注意:寫獨佔。讀共享。寫鎖優先順序高。(讀寫之間是互斥且同步的關係)

/*#####   rw.cc   #####*/

#include#include#includeusing namespace std;

int book = 0;

pthread_rwlock_t rwlock; //定義乙個讀寫鎖

void *reader(void *arg)

}void *writer(void *arg)

}int main()

#######   makefile   #######

rw:rw.cc

g++ -o $@ $^ -lpthread -fpermissive

.phony:clean

clean:

rm -f rw

讀者寫者問題

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

讀者寫者問題

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

讀者 寫者問題

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