2个线程模拟卖火车票
2017-07-27 09:53
309 查看
2个线程模拟卖火车票
最近在看关于进程线程的知识点,然后手动敲一遍代码,但是发现一个问题,运行结果的第一行不知道是什么情况。。先记录下来,供以后继续学习的参考吧
#include <iostream>#include <windows.h>
using namespace std;
//2个线程卖火车票的小程序
DWORD WINAPI Fun1Proc(LPVOID lpParameter); //thread data
DWORD WINAPI Fun2Proc(LPVOID lpParameter); //thread data
int index=0;
int tickets=10;
HANDLE hMutex;
int 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,TRUE,"tickets");
if(hMutex)
{
if(ERROR_ALREADY_EXISTS==GetLastError())
{
cout<<"only one instance can run!"<<endl;
return 0;
}
}
WaitForSingleObject(hMutex,INFINITE);
ReleaseMutex(hMutex);
ReleaseMutex(hMutex);
Sleep(4000);
return 0;
}
//线程1的入口函数
DWORD WINAPI Fun1Proc(LPVOID lpParameter)//thread data
{
while(true)
{
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex,INFINITE);
if(tickets>0)
{
Sleep(1);
cout<<"thread1 sell tickets:"<<tickets--<<endl;
}
else
break;
ReleaseMutex(hMutex);
}
return 0;
}
//线程2的入口函数
DWORD WINAPI Fun2Proc(LPVOID lpParameter)//thread data
{
while(true)
{
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex,INFINITE);
if(tickets>0)
{
Sleep(1);
cout<<"thread2 sell tickets:"<<tickets--<<endl;
}
else
break;
ReleaseMutex(hMutex);
}
return 0;
}
这个问题等自己解决后再来更新想法吧
相关文章推荐
- C++ 多线程编程实例【2个线程模拟卖火车票的小程序】
- c++多线程,2个线程模拟卖火车票的小程序
- 模拟售票:10张票由2个窗口(线程)售出
- Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区<另外的写法>
- Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区
- Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区
- 将线程锁加在对象上与锁加在方法上的区别(模拟火车票联网售票系统:多个线程同时出票,保证每张出票的编号连续且不重复。)
- 设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况(提示:利用多线程)
- Java中创建线程的两个方法____解决火车票或售票问题
- 一个方法最多2个线程同时使用的JAVA实现
- java 线程模拟文件下载
- [知了堂学习笔记]线程扩展_模拟线程池
- App11_08_用两个线程模拟存票、售票过程
- python中的多线程----以2个线程卖票为例
- 02_天气查询_socket方式模拟_单线程
- 在Windows线程中模拟其他用户上下文!
- 2个线程向同一数组中加随机数,每个数组加3个数,交替
- java+oracle+web(第九天) java 基础课程(三) 多线程同步和死锁(2个线程、四个线程) JDK1.5新方法
- iOS经典讲解之线程锁NSLock案例(卖火车票)
- 线程-模拟死锁问题