首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待超时,WaitForSingleObject超时

等待超时,WaitForSingleObject超时
EN

Stack Overflow用户
提问于 2012-06-20 16:27:48
回答 2查看 432关注 0票数 0

我正在使用带有waitForAll参数= true的WaitForMultipleObject函数。这里使用了handle对象的std::vector来等待。如果此函数超时,那么我如何确定等待哪个处理程序超时?

代码语言:javascript
复制
if(WAIT_OBJECT != WaitForMultipleObject(vector.size(), vector.data(), true, 16000))
{
//get the event that causes the wait to time out(assume that only one object is timed out.others are successfully set.)
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 16:35:40

根据MSDN的WaitForMultipleObjects函数定义:

返回值减去WAIT_OBJECT_0表示满足等待的对象的数组索引。如果在调用期间有多个对象变为信号对象,则这是所有信号对象中索引值最小的信号对象的数组索引。

所以,你只需要检查:如果函数成功了-一切都好,如果没有,那么检查数组中有哪些句柄,哪些没有。这样你就可以找出有问题的句柄。

另外,我建议您看一下SignalObjectAndWait函数。它的行为是不同的,但也许你会发现它在某些情况下很有用。

票数 1
EN

Stack Overflow用户

发布于 2012-06-20 16:32:24

您说您正在使用WaitForMultipleObject,但您的代码显示的是WaitForSingleObject。假设您使用的是WaitForMultipleObject,并且如果您对参数设置为true,这意味着当向量中所有对象的状态都被通知时,函数将返回。

因此,在您的情况下,如果超时,则不会向您的任何对象发出信号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11115581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档