为什么WaitForSingleObject的(INVALID_HANDLE_VALUE,INFINITE)块?
-
16-09-2019 - |
题
为什么
HANDLE mutexHandle = INVALID_HANDLE_VALUE;
WaitForSingleObject(mutexHandle, INFINITE);
阻止?它不返回错误消息。检查INVALID_HANDLE
手柄将是愚蠢互斥如我需要互斥访问互斥处理...
顺便说一句:它与WAIT_FAILED
返回如果手柄被关闭
解决方案
从 http://blogs.msdn.com/oldnewthing /archive/2004/03/02/82639.aspx :
第四,必须特别小心与
INVALID_HANDLE_VALUE
值:巧合的是,该值INVALID_HANDLE_VALUE
恰好是数值上等于由GetCurrentProcess()
返回的pseudohandle。很多内核函数接受pseudohandles,所以如果你陷入困境时,不慎调用,也就是说,在一个失败的WaitForSingleObject
手柄INVALID_HANDLE_VALUE
,你实际上将结束等待自己的过程。这个等待会,当然,永远不会完成,因为一个进程退出时,所以你最终等待自己的信号。
不隶属于 StackOverflow