C++多线程 例子
C++多線程 例子
2008-08-21 15:11
| //這是2個線程模擬賣火車票的小程序 #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; ??? //創(chuàng)建線程 ??? hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL); ??? hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL); ??? CloseHandle(hThread1); ??? CloseHandle(hThread2); ??? //創(chuàng)建互斥對象 ??? 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的入口函數(shù) 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的入口函數(shù) 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; } |
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
- 上一篇: 基于NXP iMX8测试Secure B
- 下一篇: C++多线程(一)