如果我等待关闭的互斥锁,会发生什么?如果我等待关闭的互斥锁,会发生什么?
DWORD WINAPI Fun2Proc(LPVOID lpParameter // thread data)
{
while(TRUE)
{
WaitForSingleObject(hMutex,INFINITE); //what would happen here?
Sleep(1000);
ReleaseMutex(hMutex);
}
return 0;
}
HANDLE hMutex;
int main(){
HANDLE hThread2;
hMutex=CreateMutex(NULL, FALSE,"tickets");
CloseHandle(hMutex); // and closed here
hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
CloseHandle(hThread2);
......
}
更好的问题:当你运行这段代码时**发生了什么**? – WhozCraig
如果您评估了WaitForSingleObject的返回值,您可能会知道答案。 – cdoubleplusgood
会发生什么?那么严格来说,任何“可能”都会发生,因为你调用了未定义的行为。 Windows会立即杀死你的程序,或让蚂蚁吃你的主窗口或任何东西。 (实际上,它可能要么产生错误,要么无限期地等待,但它仍然是一个糟糕的主意。) –