何时返回WAIT_ABANDONED_0

时间:2012-06-21 21:43:11

标签: multithreading winapi wait

我的代码如下......

 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吗? 什么类型的物品可以“放弃”?

1 个答案:

答案 0 :(得分:3)

WaitForSingleObject()的MSDN文档中对此进行了描述。

只有互斥锁才会导致此错误情况。它表示获取互斥锁的线程在未通过调用ReleaseMutex()显式释放的情况下终止。这是一个非常严重的错误情况,有些事情是相当重要的,当发生这种情况时你应该点击Big Red Emergency Stop按钮。它几乎永远不会只是处于错误状态的互斥锁,无论该线程触及的其他共享程序状态是否也很可能不一致。