Mutex可以被多次wait,那么什么情况下Wait一个Mutex才会阻塞?
#include<windows.h>
#include<windef.h>
#include<stdio.h>
#define BUFSIZE 1024
#define NAME "mymutex"
int main(void){
HANDLE hMutex=CreateMutex(NULL,FALSE,NAME);
if(!hMutex || INVALID_HANDLE_VALUE==hMutex){
printf("CreateMutex failed\n");
return 1;
}
ReleaseMutex(hMutex);
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex,1000);
HANDLE h1=OpenMutex(SYNCHRONIZE,TRUE,NAME);
HANDLE h2=OpenMutex(SYNCHRONIZE,TRUE,NAME);
WaitForSingleObject(hMutex,1000);
CloseHandle(hMutex);
WaitForSingleObject(hMutex,1000);
return 0;
}
这个程序不会阻塞,瞬间运行完成。为什么?
我如果要让程序中的某个WaitForSingleObject()阻塞并等待,应该怎么改代码?
谢谢!!!!!