请教一个关于互斥对象的问题(createmutex)

helae helae 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
程序如下:
#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=100;
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,FALSE,NULL);

Sleep(4000);// Sleep(10);
}

DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
)
{

while(TRUE)
{
WaitForSingleObject(hMutex,INFINITE);
if(tickets>0)
{
Sleep(1);
cout<<"thread1 sell tickets : "<<tickets--<<endl;
}
else
break;
ReleaseMutex(hMutex);
}

return 0;
}

DWORD WINAPI Fun2Proc(
LPVOID lpParameter // thread data
)
{
while(TRUE)
{
WaitForSingleObject(hMutex,INFINITE);
if(tickets>0)
{
Sleep(1);
cout<<"thread2 sell tickets : "<<tickets--<<endl;
}
else
break;
ReleaseMutex(hMutex);
}

return 0;
}

我的疑惑是
线程1在释放了hMutex后,线程2就会马上获得hMutex吗?

该程序运行的结果是
thread1 sell tickets :100
thread2 sell tickets :99
thread1 sell tickets :98
thread2 sell tickets :978
....

但有没有可能出现如下的运行结果呢
thread1 sell tickets :60
thread1 sell tickets :59
thread2 sell tickets :58
thread1 sell tickets :57


...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
helae
VC/MFC 16,550 成员 421,606 内容