生產者消費者

2021-08-03 06:33:11 字數 1650 閱讀 8346

作業系統的經典問題
生產者和消費者問題的程式設計,使用語言為c++,這是作業系統實驗課上的程式設計,拿出來和大家分享,不足之處還望指出,謝謝。
// 生產者消費者

#include#include#includeusing namespace std;

struct product//生產的產品

;queueg_queue;//緩衝池佇列

handle bufferfullsemaphore;//緩衝池滿的訊號量

handle bufferemptysemaphore;//緩衝池空的訊號量

handle mutex;//操作互斥鎖

static int num = 0;//當前池子的位置

dword winapi producerfunc(lpvoid n);//生產者程序函式

dword winapi consumerfunc(lpvoid n);//消費者程序函式

int buffersize;//緩衝池大小

int costtask = 0;//消費多少個就結束

int costnum = 0;//當前消費的數量

dword thrdid;

class producer

int getid()

int getproductnum()

void incproductnum()

handle gethandle()

product getproduct()

void setproductpos(int n)

protected:

handle handle;

int productnum;

int id;

product product;

};class consumer

int getid()

int getconsumenum()

void incconsumenum()

handle gethandle()

protected:

handle handle;

int consumenum;

int id;

};dword winapi producerfunc(lpvoid n)

else

} return 0;

}dword winapi consumerfunc(lpvoid n)

else

}return 0;

}int main()

for (int i = 0; i < c ; i++)

for (int i = 0; i < p; i++)

for (int i = 0; i < c; i++)

delete producers, consumers;

closehandle(bufferemptysemaphore);

closehandle(bufferfullsemaphore);

closehandle(mutex);

getchar();

getchar();

return 0;

}

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者消費者

using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...

生產者消費者

執行緒通訊 乙個執行緒完成了自己的任務時,要通知另外乙個執行緒去完成另外乙個任務.wait 等待 如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態,等待狀態下的執行緒必須要被其他執行緒呼叫notify方法才能喚醒。notify 喚醒 喚醒執行緒池等待執行緒其中的乙個。notifyall 喚...