互斥对象 出现的错误

yht8708 2012-03-18 02:07:19
代码:
hMutex = CreateMutex(NULL,FALSE,NULL);

DWORD WINAPI ThreadProc1(
LPVOID lpParameter
)
{
while (1)
{
WaitForSingleObject(hMutex,INFINITE);
if (tickets > 0)
{
printf_s("Thread1 sells ticket :%d\n",tickets--);
printf_s("Thread1 sells ticket \n");
}
else
break;
ReleaseMutex(hMutex);

}

return 0;
}

DWORD WINAPI ThreadProc2(
LPVOID lpParameter
)
{

while (1)
{
WaitForSingleObject(hMutex,INFINITE);
if (tickets > 0)
{
printf_s("Thread2 sells ticket :%d\n",tickets--);
}
else
break;
ReleaseMutex(hMutex);

}
return 0;
}

利用互斥对象实际应该是先输出线程1的两句话,再输出线程2,但有时候最开始的输出时如下面图片所示,线程1与线程2交替输出,有点搞不懂

...全文
217 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
狂且 2012-03-19
  • 打赏
  • 举报
回复

接分!
赵4老师 2012-03-19
  • 打赏
  • 举报
回复
接分
yht8708 2012-03-19
  • 打赏
  • 举报
回复
我想知道 3 4楼到底说了什么……
yht8708 2012-03-18
  • 打赏
  • 举报
回复
散分了 明白了……
yht8708 2012-03-18
  • 打赏
  • 举报
回复
图片没有正确显示……下面是结果的前几行输出
Thread1 sells ticket :100
Thread2 sells ticket :99
Thread1 sells ticket
Thread2 sells ticket :98

Thread1 sells ticket :97
Thread1 sells ticket

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧