#include <windows.h>
#include <iostream.h>
DWORD WINAPI Fun1Proc(LPVOID lpParameter);//线程入口函数
DWORD WINAPI Fun2Proc(LPVOID lpParameter);//线程入口函数
int tickets=100;//总共的票数
HANDLE hMutex;//互斥锁句柄
void main(){
HANDLE hThread1;
HANDLE hThread2;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);//创建一个线程
hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);//创建一个线程
CloseHandle(hThread1); //关闭线程句柄
CloseHandle(hThread2);
//创建匿名的互斥锁对象
hMutex=CreateMutex(NULL,FALSE,NULL);
//cout<<"main thread is running"<<endl;
Sleep(4000);
}
//线程1的入口函数
DWORD WINAPI Fun1Proc(LPVOID lpParameter){
//cout<<"thead1 is running"<<endl;
while(true){
WaitForSingleObject(hMutex,INFINITE);//获得锁
if(tickets>0){
Sleep(1);
cout<<"thread1 sell ticket:"<<tickets--<<endl;
}else{
break;
}
ReleaseMutex(hMutex);//释放锁
}
return 0;
}
//线程2的入口函数
DWORD WINAPI Fun2Proc(LPVOID lpParameter){
//cout<<"thead2 is running"<<endl;
while(true){
WaitForSingleObject(hMutex,INFINITE);// 获得锁
if(tickets>0){
Sleep(1);
cout<<"thread2 sell ticket:"<<tickets--<<endl;
}else{
break;
}
ReleaseMutex(hMutex);//释放锁
}
return 0;
}