gpt4 book ai didi

c++ - 具有互斥量和事件的 WaitForMultipleObjects

转载 作者:行者123 更新时间:2023-11-30 02:03:11 26 4
gpt4 key购买 nike

如果我有以下 C++ 代码(适用于 Windows 操作系统):

HANDLE hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
HANDLE hMutex = ::CreateMutex(NULL, FALSE, NULL);

HANDLE hHandles[] = {
hEvent,
hMutex
};

DWORD dwR = ::WaitForMultipleObjects(2, hHandles, FALSE, INFINITE) - WAIT_OBJECT_0;

//if dwR == 0, what state is hMutex in?
//Or, do I need to call ReleaseMutex(hMutex) in that case?

我不确定如何处理有关互斥锁的这种情况。

最佳答案

dwR 不完全为零,它是 WAIT_OBJECT_0 + 0,即您的等待在第一个提供的句柄上得到满足。这是事件的句柄,因此您无需触摸互斥体。

如果结果是 WAIT_OBJECT_0 + 1 那么它是用于成功等待的互斥句柄。完成需要做的事情后,您可以通过调用 ReleaseMutex 释放所有权。

关于c++ - 具有互斥量和事件的 WaitForMultipleObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12295030/

26 4 0