// 20101112.cpp : 定义控制台应用程序的入口点。
//使用信号量实现线程同步
#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std;
int num=1;
HANDLE hDemaphore;
unsigned long _stdcall ThreadProc1(void *lpParameter)
{
while(num<100)
{
long count;
WaitForSingleObject(hDemaphore,INFINITE);
cout<<"信号量1当前计数"<<num<<endl;
num++;
Sleep(100);
ReleaseSemaphore(hDemaphore,1,&count);
}
return 0;
}
unsigned long _stdcall ThreadProc2(void *lpParameter)
{
while(num<100)
{
long count;
WaitForSingleObject(hDemaphore,INFINITE);
cout<<"信号量2当前计数"<<num<<endl;
num++;
Sleep(100);
ReleaseSemaphore(hDemaphore,1,&count);
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hThread1=CreateThread(NULL,0,ThreadProc1,NULL,0,NULL);
HANDLE hThread2=CreateThread(NULL,0,ThreadProc2,NULL,0,NULL);
hDemaphore=CreateSemaphore(NULL,1,100,_T("Sem"));
CloseHandle(hThread1);
CloseHandle(hThread2);
while(true)
{
;
}
return 0;
}