您的位置:首页 > 编程语言 > C语言/C++

c++编写的多线程售票的例子

2011-03-25 13:18 501 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: