总结一下csdn上面的一个帖子。
cql23 提出一个问题,请看下面的例子。
#include <iostream>
#include <windows.h>
using namespace std;
const unsigned int size=10;
const unsigned int pcount=3;
const unsigned int ccount=1;
unsigned int Num=0;
int i,j;
HANDLE mutex,fullsem,emptysem;
CRITICAL_SECTION cSection;
void Get()
{
WaitForSingleObject(mutex,NULL);
//cout <<"消费了一件产品,产品总数:" <<--Num <<endl; //(1)
printf("消费了一件产品,产品总数:%d/n",--Num); //(2)
ReleaseMutex(mutex);
}
void Put()
{
WaitForSingleObject(mutex,NULL);
//cout <<"生产了一件产品,产品总数:" <<++Num <<endl; //(1)
printf("生产了一件产品,产品总数:%d/n",++Num); //(2)
ReleaseMutex(mutex);
}
DWORD WINAPI Procdure(LPVOID Par)
{
while(true)
{
WaitForSingleObject(fullsem,NULL);
WaitForSingleObject(mutex,NULL);
Put();
Sleep(4000);
ReleaseMutex(mutex);
ReleaseSemaphore(emptysem,1,NULL);
}
return 0;
}
DWORD WINAPI Customer(LPVOID Par)
{
while(true)
{
WaitForSingleObject(emptysem,NULL);
WaitForSingleObject(mutex,NULL);
Get();
Sleep(4