【问题标题】:WaitForSingleObject always return WAIT_OBJECT_0WaitForSingleObject 总是返回 WAIT_OBJECT_0
【发布时间】:2021-03-03 19:57:52
【问题描述】:

我没有设置事件信号,但 WaitForSingleObject 总是返回。我在主线程中创建了一个事件。

g_hHeartMonitorEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

然后在另一个线程中,我使用 WaitForSingleObject 来等待事件信号。

`

while(true)
{
    DWORD dwResult = WaitForSingleObject(lpThis->g_hHeartMonitorEvent, 90 * 1000);
    if (WAIT_OBJECT_0 == dwResult)
    {
        LogWriteEx("WaitForSingleObject:dwResult = WAIT_OBJECT_0");
        continue;
    }
}

`

我发现 WaitForSingleObject 总是返回 WAIT_OBJECT_0。仅在一个地方调用 setevent。 这台机器有一个单核 CPU。

【问题讨论】:

    标签: waitforsingleobject


    【解决方案1】:

    如果事件的句柄由于某种未知原因而关闭,就会发生这种情况。

    【讨论】:

    • 但是请注意,不能保证该行为:WaitForSingleObject explicitly documents 表示“如果在等待仍处于挂起状态时关闭此句柄,则函数的行为未定义”。关闭仍在使用的句柄应始终被视为错误(并且句柄通常不会神秘地关闭,而只能通过显式调用 CloseHandle 来关闭;在没有负责进程的情况下关闭句柄通常留给专门的调试工具使用)。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多