作業系統同步互斥經典問題 讀者寫者問題

2022-08-27 21:51:17 字數 1100 閱讀 5280

#include #include #include using namespace std;

mutex mt, wsem;

int readcount = 0;

#define read(a) cout << a << " is reading..." << endl;

#define finish(a) cout << a << " finished reading." << endl;

#define write cout << "writing..." << endl;

void p(mutex &mt)

void v(mutex &mt)

// 加入unistd.h出現問題,似乎與thread的相容性比較差,於是重寫

void delay()

void read(string a)

}void write()

}int main()

使rsem中只有乙個讀者在等待,保證了如果有寫者,寫者優先寫。

#include #include #include using namespace std;

#define read(a,i) cout << a << i<<" is reading..." << endl;

#define finr(a,i) cout << a << i<<" finished reading." << endl;

#define write(a,i) cout << a <#define finw(a, i) cout << a

void v(mutex &mt)

// 加入unistd.h出現問題,似乎與thread的相容性比較差,於是重寫

void delay()

mutex mr, wsem, rsem, mrc, mwc;

int readcount = 0;

int writecount = 0;

void read(string a)

}void write(string a)

}int main()

讀者寫者問題 作業系統

動機 共享資料的訪問 兩種型別使用者 讀者 不需要修改資料 寫者 讀取和修改資料 問題的約束 允許同一時間有多個讀者,但在任何時候只有乙個寫者 當沒有寫者是讀者才能訪問資料 當沒有讀者和寫者時,寫者才能訪問資料 在任何時候只有乙個執行緒能操作共享變數 多個併發程序的資料集共享 rcount 有多少個...

作業系統 讀者 寫者問題

讀者間可以同時訪問資源 任一寫者必須與其他寫者或者讀者互斥訪問共享資源 分析 寫者與任一程序互斥訪問共享資源 讀者互斥訪問readcount變數 1申請對檔案的使用權p mutex 2寫檔案 3釋放對檔案的使用權v mutex 設正在讀的讀者個數readcount初 0 1第乙個讀者來 申請對檔案的...

作業系統 讀者寫者問題

乙個資料檔案或記錄可以被多個程序共享。唯讀的程序為 reader程序 其他程序為 writer程序 允許多個物件同時讀乙個共享物件,但是不允許乙個writer程序和其他reader程序同時共享物件。使用記錄性訊號量解決讀者與寫者問題 互斥訊號量wmutex 實現reader與writer程序間在讀或...