C++ 多线程(两个线程卖火车票)
2017-06-07 10:39
351 查看
#include <windows.h> #include <iostream.h> DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread data DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data int index=0; int tickets=10; 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,TRUE,"tickets"); if (hMutex) { if (ERROR_ALREADY_EXISTS==GetLastError()) { cout<<"only one instance can run!"<<endl; return; } } WaitForSingleObject(hMutex,INFINITE); ReleaseMutex(hMutex); ReleaseMutex(hMutex); Sleep(4000); } //线程1的入口函数 DWORD WINAPI Fun1Proc(LPVOID lpParameter)//thread data { while (true) { ReleaseMutex(hMutex); 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)//thread data { while (true) { ReleaseMutex(hMutex); WaitForSingleObject(hMutex,INFINITE); if (tickets>0) { Sleep(1); cout<<"thread2 sell ticket :"<<tickets--<<endl; } else break; ReleaseMutex(hMutex); } return 0; }
相关文章推荐
- c++多线程,2个线程模拟卖火车票的小程序
- C++ 多线程编程实例【2个线程模拟卖火车票的小程序】
- 多线程,实现两个线程加1,两个线程减1
- 当JNI遇到多线程--java对象如何被C++中的多个线程访问?
- 【C/C++多线程编程之四】终止pthread线程
- C++多线程框架(一)--------- new一下就启动一个线程
- C++线程 -- boost::barrier解决多线程分工问题
- 当JNI遇到多线程--java对象如何被C++中的多个线程访问?
- 【C/C++多线程编程之四】终止pthread线程
- C++多线程编程经验——线程暂停、恢复
- C++ 0x 使用condition_variable 与 Mutex 同步两个线程
- [java多线程]创建线程的两个方法
- 学习java多线程的笔记3-使用BlockingQueue阻塞队列来模拟两个线程之间的通信
- 当JNI遇到多线程--java对象如何被C++中的多个线程访问?
- 用C#语言写的多线程演示程序:两个线程,可以开始,可以暂停,可以恢复,可以清除。-
- 【C/C++多线程编程之三】创建pthread线程
- C++多线程编程经验——线程暂停
- 【多线程】两个线程 交替执行
- C++多线程框架(一)--------- new一下就启动一个线程
- 【C/C++多线程编程之十】pthread线程私有数据