gpt4 book ai didi

c++ - 使用 CreateEvent 创建/打开一个已经存在的偶数是否会重置信号?

转载 作者:搜寻专家 更新时间:2023-10-31 01:58:45 25 4
gpt4 key购买 nike

如果我使用 CreateEvent 打开一个事件:

 responseWaitEvent = CreateEvent(NULL,        // no security
TRUE, // manual-reset event
FALSE, // not signaled
(LPTSTR)eventName); // event name

并且此事件已经存在并且已发出信号。此调用是否会重置信号(因为将初始状态设置为 FALSE)。

还是会在调用时立即退出等待:

 if (responseWaitEvent)
{
DWORD dw = WaitForSingleObjectEx(responseWaitEvent, m_ResponseTimeoutMillis, FALSE);

最佳答案

第二次调用将打开事件,它不会改变事件的状态。

我知道这一点,因为文档说它会打开它,但不会说它会重置它。如果它重置它,那将很重要,值得一提。

HANDLE responseWaitEvent = CreateEvent(NULL,        // no security
TRUE, // manual-reset event
TRUE, // signaled
(LPTSTR)_T("TESTEvent")); // event name
assert(responseWaitEvent && "Could not create event");

responseWaitEvent = CreateEvent(NULL, // no security
TRUE, // manual-reset event
FALSE, // not signaled
(LPTSTR)_T("TESTEvent")); // event name

assert(responseWaitEvent && "Could not open event");

DWORD dw = WaitForSingleObjectEx(responseWaitEvent, 10000, FALSE);
assert(dw != WAIT_TIMEOUT);

反之:

HANDLE responseWaitEvent2 = CreateEvent(NULL,        // no security
TRUE, // manual-reset event
FALSE, // not signaled
(LPTSTR)_T("TESTEvent2")); // event name
assert(responseWaitEvent && "Could not create event");

responseWaitEvent2 = CreateEvent(NULL, // no security
TRUE, // manual-reset event
TRUE, // signaled
(LPTSTR)_T("TESTEvent2")); // event name
assert(responseWaitEvent && "Could not open event");

DWORD dw2 = WaitForSingleObjectEx(responseWaitEvent2, 10000, FALSE);
assert(dw2 == WAIT_TIMEOUT);

关于c++ - 使用 CreateEvent 创建/打开一个已经存在的偶数是否会重置信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com