关于thread(C++版)

来源:互联网 发布:php入门书籍 知乎 编辑:程序博客网 时间:2024/05/18 02:50

来自网络
//这是2个线程模拟卖火车票的小程序#include <windows.h>#include <iostream.h>DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread dataDWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread dataint 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;}elsebreak;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;}elsebreak;ReleaseMutex(hMutex);}return 0;}


0 0
原创粉丝点击