gpt4 book ai didi

c++ - WaitForSingleObject 超时太快

转载 作者:太空狗 更新时间:2023-10-29 23:08:16 24 4
gpt4 key购买 nike

我在辅助线程中有这段代码:

DWORD result = WaitForSingleObject(myhandle,10000);
if(result == WAIT_OBJECT_0){
AfxMessageBox(_T(...));
}
else if(result == WAIT_TIMEOUT){

AfxMessageBox(_T("Timeout"));
}

有时,并非总是如此,超时几乎会在调用 WaitForSingleObject 时立即调用(甚至不会延迟 1 秒)。

我做错了什么吗?对更稳定的替代品有什么建议吗?


编辑:

myhandle 在类构造函数中创建为:

myhandle = CreateEvent(NULL,FALSE,FALSE,_T("myhandle"));

它会被另一个函数调用:

SetEvent(myhandle);

关键是它在我执行 SetEvent 时有效,问题是它有时会在调用 WaitForSingleObject 时立即超时,即使它应该等待 10 秒。

最佳答案

您真的需要/想要命名事件吗?通常这只是进程间并发控制所必需的。

如果您有此类的多个实例,它们都将使用相同的事件 - 请参阅 docs for CreateEvent关于调用已存在的命名对象。

可能您需要做的就是删除此处的名称。这允许每个类实例都有自己的 Event 对象,并且行为应该更可预测。

关于c++ - WaitForSingleObject 超时太快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317135/

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