#include<windows.h>
#include<iostream.h>
DWORD WINAPI fun1proc(LPVOID lparameter);
DWORD WINAPI fun2proc(LPVOID lparameter);
int index=0;
int tickets=100;
HANDLE hmutex; //定义互斥对象句柄
int main()
{
HANDLE ht1; //线程一句柄
HANDLE ht2; //线程二句柄
ht1=CreateThread(NULL,0,fun1proc,NULL,0,NULL); //创建线程一,(NULL(默认安全性),初始宅大小,入口函数,传递参数,0(创建线程立即运行),接收线程的ID)
ht2=CreateThread(NULL,0,fun2proc,NULL,0,NULL);//创建线程二
CloseHandle(ht1);
CloseHandle(ht2);
hmutex=CreateMutex(NULL,FALSE,NULL); //创建互斥对象,(NULL(默认安全性),互斥对象的拥有者,互斥对象的名称(NULL是匿名))
Sleep(4000); //等待
return 0;
}
DWORD WINAPI fun1proc(LPVOID lparameter) //线程一
{
while(1)
{
WaitForSingleObject(hmutex,INFINITE); (互斥对象的句柄,等待时间)
if(tickets>0)
{
Sleep(1);
cout<<"线程一卖出一张票:"<<tickets--<<endl;
}
else
{
break;
}
ReleaseMutex(hmutex); //释放互斥对象
}
return 0;
}
DWORD WINAPI fun2proc(LPVOID lparameter) //线程二
{
while(1)
{
WaitForSingleObject(hmutex,INFINITE);
if(tickets>0)
{
Sleep(1);
cout<<"线程二卖出一张票:"<<tickets--<<endl;
}
else
{
break;
}
ReleaseMutex(hmutex);
}
return 0;
}火车站售票系统模拟程序
原文:http://blog.csdn.net/wljlwyq/article/details/40661189