用互斥鎖解決讀者 寫者問題

2021-06-05 13:15:55 字數 929 閱讀 7447

#include

#include

/*讀-寫的次數限制,防止程式無限制的執行*/

#define max_time 12

void * read(void *pread);

void * write(void *pwrite);

void init_time();

char buffer;

/* 確定緩衝區中是否有資料*/

int buffer_has_item=0;

/*產生乙個資料*/

char make_new_item();

/*消費這個資料*/

void consume_item(char c);

/*宣告乙個鎖*/

pthread_mutex_tmutex;

/*計算延遲用的資料結構*/

struct time_struct

record_time;

int main(int argc,char* argv)

/* write 執行緒的函式入口 */

void * write(void *pwrite)

/*使用完以後開鎖,以使其他執行緒可以使用共享區*/

pthread_mutex_unlock(&

mutex

);

} pthread_exit(

null);}

void * read(void *pread)

pthread_mutex_unlock(&

mutex);}

pthread_exit(

null

); }

char make_new_item()

void consume_item(char c)

void init_time()

用訊號量解決同步互斥問題 讀者寫者問題

os老師上課在講解讀者和寫者問題時,一般會按照三個層次展開講解。根據訊號量的分布和控制邏輯,大體可以將讀者 寫者問題按由易到難分成如下這三大類 讀者優先,課本上的寫法屬於佔位後讀優先,與佔位前讀優先 絕對讀優先一起,均歸於此類 讀寫公平,根據讀寫程序的到達先後順序嚴格執行fcfs排程 寫優先,包括佔...

用讀寫鎖實現 讀者寫者模型

讀者寫者模型是作業系統中的一種同步與互斥機制,與生產者消費者模型類似,但不同的是在生產者消費者模型中,多個讀者間沒有關係,而且消費者會讓臨界資源的個數減少,而讀者不會改變臨界資源的個數。讀者寫者模型應該具備的條件 1.寫者是排他性的,即有多個寫者的情況下,只有乙個寫者占有倉庫。2.讀者可以一起讀,採...

讀者寫者問題

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