/**
功能:實現生產者和消費者正常活動
題目內容:生產者-消費者問題,是指兩組程序共享乙個環形的緩衝區。一組程序被稱為生產者,另一組程序被稱為消費者。
緩衝池是由若干個(程式假設為4個)大小相等的緩衝區組成的,每個緩衝區可以容納乙個產品。生產者程序不斷地將生產的產品放入緩衝池,
消費者程序不斷地將產品從緩衝池取出。用pv操作實現生產者和消費者的正常活動的程式
題目分析:
在生產者-消費者問題中,既存在程序同步問題,也存在著臨界區的互斥問題。當緩衝區都滿時,表示供大於求,
生產者停止生產,進入等待狀態,同時喚醒消費者;當緩衝區都空時,表示供不應求,消費者停止消費,喚醒生產者。
這說明了,生產者和消費者存在同步關係。
對於緩衝池,它顯然是乙個臨界資源,所有的生產者和消費者都要使用它,
而且都要改變它的狀態,故對於緩衝池的操作必須是互斥的。
*/#include#includeusing namespace std;
const int n=4;
//宣告全域性變數
int i=0,j=0; //i和j分別指向緩衝區
int buffer[n]; //緩衝池
int itemp=0; //用來存放生產的產品
int itemc=0; //用來存放消費的產品
//宣告控制代碼
handle mutex; //緩衝池訊號量
handle empty; //空緩衝區訊號量
handle full; //滿緩衝區訊號量
handle pthread; //producer執行緒控制代碼
handle cthread; //consumer執行緒控制代碼
//宣告程序函式
dword winapi producer(lpvoid ipparameter);
dword winapi consumer(lpvoid ipparameter);
int main()
{ //建立訊號量
mutex = createsemaphore(null,1,1,null);
empty = createsemaphore(null,1,4,null);
full = createsemaphore(null,0,4,null);
cout<
用PV操作 實現生產者 消費者問題(C 語言)
功能 實現生產者和消費者正常活動 題目內容 生產者 消費者問題,是指兩組程序共享乙個環形的緩衝區。一組程序被稱為生產者,另一組程序被稱為消費者。緩衝池是由若干個 程式假設為4個 大小相等的緩衝區組成的,每個緩衝區可以容納乙個產品。生產者程序不斷地將生產的產品放入緩衝池,消費者程序不斷地將產品從緩衝池...
PV操作系列 生產者 消費者
假設 生產者 程序不斷向共享緩衝區寫人資料 即生產資料 而 消費者 程序不斷從共享緩衝區讀出資料 即消費資料 共享緩衝區共有n個 任何時刻只能有乙個程序可對共享緩衝區 臨界區 進行操作。所有生產者和消費者之間要協調,以完成對共享緩衝區的操作。共享緩衝區的大小in,out 0.k 1 in記錄第乙個空...
pv 生產者和消費者
include include include include define buffer size 8 struct products int bufferisfull struct products products return 0 int bufferisempty struct produ...