使用WaitForSingleObject函数。
如果调用该函数并超时,是否仍需要释放互斥对象?
即,如果五秒钟已经过去,ReleaseMutex
应该在位置1.
还是2.
?
WaitForSingleObject(5 second time out)
{
//access shared resource
//1. - ReleaseMutex() here?
}
//2. - ReleaseMutex() here?
使用WaitForSingleObject函数。
如果调用该函数并超时,是否仍需要释放互斥对象?
即,如果五秒钟已经过去,ReleaseMutex
应该在位置1.
还是2.
?
WaitForSingleObject(5 second time out)
{
//access shared resource
//1. - ReleaseMutex() here?
}
//2. - ReleaseMutex() here?
WaitForSingleObject
超时,则表示您未获取到互斥对象,因此不应该释放它。ReleaseMutex
。只有在获得所有权时才需要释放互斥锁。请注意,有4种可能的返回值,在2种情况下,您将获得所有权,在另外2种情况下则不会。
WAIT_ABANDONED - 您获得了所有权并需要释放互斥锁,但是前一个所有者未经显式释放互斥锁而终止,因此共享状态可能不一致。
WAIT_OBJECT_0 - 您已经获得了所有权。您需要释放互斥锁。
WAIT_TIMEOUT - 在超时期间未释放互斥锁。
WAIT_FAILED - 通常是由于代码错误(即无效句柄)导致的。