【发布时间】:2012-03-26 12:28:53
【问题描述】:
首先,我对其进行了测试,它运行良好。 我想知道它是否正确。
funcA() {
DWORD res = WaitForSingleObject(mutex, INFINITE);
if (aaa != bbb) throw "aaa";
ReleaseMutex(mutex);
}
WaitForSingleObject 始终返回“0”,而不是“WAIT_ABANDONED”或任何其他错误代码。 我只是找不到任何描述 Mutex 将在“抛出”时发布的文档。
谢谢
【问题讨论】:
-
如果您从同一个线程连续调用 funcA() 则这是预期的行为 - WAIT_OBJECT_0 被返回,因为 Windows 互斥体是递归的。如果您第二次从不同的线程调用 funcA(),我希望调用会阻塞,直到第一个线程释放互斥锁。
-
你是对的。我正在使用 xmlrpc 库,我认为有多个线程用于处理请求,但只有一个线程。所以,这是预期的行为,我的 Mutex 是不必要的! :)