#include <windows.h>
#include <iostream.h>
DWORD WINAPI ThreadProc1(LPVOID lpParameter);
DWORD WINAPI ThreadProc2(LPVOID lpParameter);
int tickets=100;
HANDLE hMutex;
void main(){
HANDLE handle1;
HANDLE handle2;
handle1=CreateThread(NULL,0,ThreadProc1,NULL,0,NULL);
handle2=CreateThread(NULL,0,ThreadProc2,NULL,0,NULL);
CloseHandle(handle1);
CloseHandle(handle2);
hMutex=CreateMutex(NULL,false,NULL);
Sleep(4000);
//CloseHandle(hMutex);
}
DWORD WINAPI ThreadProc1(LPVOID lpParameter)
{
while(true){
WaitForSingleObject(hMutex,INFINITE);
if (tickets>0)
{
cout<<"Thread1 sell:"<<tickets--<<endl;
}
else
{
break;
}
ReleaseMutex(hMutex);
}
return 0;
}
DWORD WINAPI ThreadProc2(LPVOID lpParameter)
{
while(tickets>0){
WaitForSingleObject(hMutex,INFINITE);
if (tickets>0)
{
cout<<"Thread2 sell:"<<tickets--<<endl;
}
else
{
break;
}
ReleaseMutex(hMutex);
}
return 0;
}
/*
HANDLE hMutex;
//在主线程创建互斥对象
hMutex=CreateMutex(NULL,false,NULL);
//在分线程里请求互斥对象
WaitForSingleObject(hMutex,INFINITE);
//在分线程里释放互斥对象
ReleaseMutex(hMutex);
*/
线程互斥共享资源
最新推荐文章于 2023-02-10 17:02:25 发布