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