1. 程式人生 > >C語言實現生產者-消費者問題

C語言實現生產者-消費者問題

#include "windows.h"
#include "conio.h"
#include "stdio.h"
#include "time.h"

#define MAX 20   

int count;    

void Proclucer()
{
 int k,a=0;
 while(1)
 {
  if(count >= MAX)
  {
   printf("緩衝池已滿!等待 2 秒!/n");
   Sleep(1000);
  }
  else
  {
   k=rand();
   if(k%2==0)
   {
    a++;
    count++;
    printf("生產了一個產品!當前產品的數量是: %d      生產產品總數:%d /n/n",count,a);
   }
   Sleep(600);          
  }
 }
}

void Consumer()
{
 int k,b=0;
 while(1)
 {
  if(count <= 0)
  {
   printf("緩衝池已空!等待 2 秒!/n");
   Sleep(1000);
  }
  else
  {
   k=rand();
   if(k%2!=0)
   {
    b++;
    count--;
    printf("取出了一個產品!當前產品的數量是: %d      取出產品總數:%d /n/n",count,b);
   }

   Sleep(600);
  }
 }
}

int tStop() 
{
 getch();                          
 return 11;      
}

void Start()   
{
 int m;
 HANDLE ahThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Proclucer,NULL,0,NULL);
 HANDLE bhThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Consumer,NULL,0,NULL);
 HANDLE hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)tStop,NULL,0,NULL);      
 m=tStop();
 if(m==11)      
 {
  CloseHandle(ahThread);
  CloseHandle(ahThread);
  CloseHandle(hThread);
  printf("/nClose Thread Success!/n");
 }
}

void main() 
{
 Start(); 
 printf("/n");
}