hMutex=CreateMutex(NULL, FALSE, NULL);
unsigned WINAPI threadInc(void * arg)
{
int i;
WaitForSingleObject(hMutex, INFINITE);
for(i=0; i<500000; i++)
num+=1;
ReleaseMutex(hMutex);
return 0;
}
unsigned WINAPI threadDes(void * arg)
{
int i;
WaitForSingleObject(hMutex, INFINITE);
for(i=0; i<500000; i++)
num-=1;
ReleaseMutex(hMutex);
return 0;
}
关于多线程有几个问题要问,当执行线程A时,首先hMutex变为已通知,然后执行下面的代码,
然后释放hmutex,然后随机执行线程B,等待hmutex变为已通知,然后执行for循环,
但是,假设执行for循环只执行了一半,这个时候会不会跳到线程A呢?
毕竟此时此刻hmutex也处于已通知状态,
难道是waitforsingeleobject会将hmutex修改为未通知状态吗?
关于多线程不理解的地方
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
於黾 2023-05-23 09:28关注WaitForSingleObject
当没有其他线程占用锁时,自己占用;当有其他线程占用锁时,阻塞,直到没有占用
ReleaseMutex解除占用本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报