[Win32]C++多线程编程实例
2012-11-12 11:43
543 查看
http://blog.csdn.net/chen825919148/article/details/7904219
输出结果:
//这是2个线程模拟卖火车票的小程序 #include <windows.h> #include <iostream> using namespace std; 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); system("pause"); } //线程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++下实现的简单实例
- C++多线程编程入门之经典实例
- C++多线程编程入门之经典实例
- C++多线程编程入门之经典实例
- C++ 多线程编程实例
- [C++][Win32]临界区编程实例
- C++多线程编程入门之经典实例
- 一个基于C++的多线程编程实例(CreateThread函数)
- C++多线程编程入门之经典实例
- C++ 多线程编程实例
- Win32 API 多线程编程——一个简单实例(含消息参数传递)
- 多线程套接字编程-----程序实例(C++实现)
- C++ 多线程编程实例【2个线程模拟卖火车票的小程序】
- Linux下C++的多线程编程---(转载)
- C++串口编程实例
- Win32下两种用于C++的线程同步类(多线程实现加锁解锁)
- win32编程 C++ 九格拼图游戏
- 【C/C++多线程编程之三】创建pthread线程
- C++串口编程实例
- C# Socket多线程编程实例