資源簡(jiǎn)介
用C-Free5軟件寫的,主函數(shù)為Int類型。在其他軟件上可能要改成void,算法方面沒有什么問題。如果要緩沖池滿就把生產(chǎn)者M(jìn)1的數(shù)改的比消費(fèi)者M(jìn)2的高,要緩沖池空則相反。
代碼片段和文件信息
#include
#include
#include
#define?N?10??//定義緩沖池的大小?
#define?M1?1
#define?M2?5
int?in=0out=0;
int?count=1; //全局變量,用來(lái)儲(chǔ)存現(xiàn)有的產(chǎn)品數(shù)目?
HANDLE?mutex;? //互斥信號(hào)量
HANDLE?empty;? //?
HANDLE?full;
void?Producer(){
while(1){
if((in+1)%N==out){
printf(“緩沖池已滿,請(qǐng)等待3秒鐘!\n\n“);
Sleep(3000);?
}
else{
WaitForSingleobject(emptyINFINITE);
WaitForSingleobject(mutexINFINITE);
count++;
in=(in+1)%N;
printf(“生產(chǎn)了一個(gè)產(chǎn)品,現(xiàn)在的產(chǎn)品數(shù)為%d\n\n“count);
? ReleaseMutex(mutex);
ReleaseSemaphore(full1NULL);
Sleep(1000);
}?
}
}
void?Consumer(){
while(1){
if(in?==?out){
printf(“緩沖池為空,請(qǐng)等待2秒鐘!\n\n“);
Sleep(2000);
}
else{
WaitForSingleobject(fullINFINITE);
WaitForSingleobject(mutexINFINITE);
count--;
out=(out+1)%N;
printf
評(píng)論
共有 條評(píng)論