为什么
HANDLE mutexHandle = INVALID_HANDLE_VALUE;
WaitForSingleObject(mutexHandle, INFINITE);
堵塞?它不会返回错误消息。检查句柄对于INVALID_HANDLE
互斥锁来说是愚蠢的,因为我需要一个互斥锁来访问互斥锁句柄......
WAIT_FAILED
顺便说一句:如果句柄关闭,它会返回。
为什么
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()
. 许多内核函数都接受伪句柄,所以如果你搞砸了并且不小心调用WaitForSingleObject
了一个失败的INVALID_HANDLE_VALUE
句柄,你实际上最终会等待你自己的进程。当然,这个等待永远不会完成,因为一个进程在退出时会发出信号,所以你最终会等待自己。