資源簡介
用C-Free5軟件寫的,主函數為Int類型。在其他軟件上可能要改成void,算法方面沒有什么問題。如果要緩沖池滿就把生產者M1的數改的比消費者M2的高,要緩沖池空則相反。
代碼片段和文件信息
#include
#include
#include
#define?N?10??//定義緩沖池的大小?
#define?M1?1
#define?M2?5
int?in=0out=0;
int?count=1; //全局變量,用來儲存現有的產品數目?
HANDLE?mutex;? //互斥信號量
HANDLE?empty;? //?
HANDLE?full;
void?Producer(){
while(1){
if((in+1)%N==out){
printf(“緩沖池已滿,請等待3秒鐘!\n\n“);
Sleep(3000);?
}
else{
WaitForSingleobject(emptyINFINITE);
WaitForSingleobject(mutexINFINITE);
count++;
in=(in+1)%N;
printf(“生產了一個產品,現在的產品數為%d\n\n“count);
? ReleaseMutex(mutex);
ReleaseSemaphore(full1NULL);
Sleep(1000);
}?
}
}
void?Consumer(){
while(1){
if(in?==?out){
printf(“緩沖池為空,請等待2秒鐘!\n\n“);
Sleep(2000);
}
else{
WaitForSingleobject(fullINFINITE);
WaitForSingleobject(mutexINFINITE);
count--;
out=(out+1)%N;
printf
- 上一篇:侯捷C++全套課程視頻資源
- 下一篇:原始套接字發送完整UDP數據包c語言實現
評論
共有 條評論