2

我有如下代码...

 HANDLE event = CreateEvent(NULL, false, false, NULL);
 // pass event to thread which will SetEvent(event);
 DWORD dwResult = MsgWaitForMultipleObjectsEx(1, &event, 3 * 1000, QS_ALLEVENTS, 0);

在这种情况下,MsgWaitForMultipleObjectsEx 甚至有可能返回 WAIT_ABANDONED_0 吗?哪些类型的物品可以被“遗弃”?

4

1 回答 1

4

它在WaitForSingleObject()的 MSDN 文档中进行了描述。

只有互斥锁会导致这种错误情况。它表示获取互斥锁的线程在没有通过调用 ReleaseMutex() 显式释放的情况下终止。这是一个非常严重的错误情况,有些东西非常糟糕,发生这种情况时你应该点击大红色紧急停止按钮。几乎永远不会只有互斥锁处于错误状态,该线程触及的任何其他共享程序状态也很可能是不一致的。

于 2012-06-21T21:53:28.323 回答