Linux系統程式設計(21) 讀者寫者模型

2021-09-24 05:22:43 字數 584 閱讀 3671

乙個交易場所:有一塊兒儲存區域儲存資料

兩種角色:讀者;寫者

三種關係:

讀者與讀者之間——沒有關係

寫者和寫者之間——互斥

讀者和寫者直接——同步互斥(同步的含義指的是:寫者優先)

讀者寫者模型最大的意義是:讀者之間沒有互斥,大大提高效率。——適用於「一寫多讀」的情況**示例:

#include #include//標頭檔案

#include //sleep標頭檔案

//定義乙個讀寫鎖//常見得優化

pthread_rwlock_t lock;

//首先要有乙個交易場所

int g_count = 0;

//兩個角色:讀者—寫者:兩個執行緒

void* reader(void* arg)

return null;

}void* writer(void* arg)

return null;

}int main()

21讀者 寫者問題

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

Linux 讀者寫者模型

前面我們已經學過了生產者消費者模型,那本文就來介紹乙個與它有些相似卻又不同的讀者寫者模型。乙個資料檔案或記錄可以被多個程序共享,我們把只要求讀檔案的程序稱為reader程序,其他程序則被稱為write程序。允許多個程序同時讀乙個共享物件,但是不允許乙個write程序和其他reader程序或write...

Linux 讀者寫者模型

在之前的部落格中我們說明了生產者消費者模型,在這篇部落格中我們討論類似的模型讀者寫者模型。讀者寫者模型是作業系統的一種同步與互斥機制,與生產者消費者模型相似,區別在於多個讀者可以共享緩衝區,但是對於寫者而言相互是競爭關係,一次只能有乙個寫者,寫入緩衝區。讀者優先 讀者先進行讀資料,寫者暫時阻塞,直到...