一个关于WaitForMultipleObjects() 的问题,望赐教!

meloyi 2016-08-31 08:56:09

int index;
while(1)
{
index = WaitForMultipleObjects(10, phNormal, false, INFINITE);
nIndex = nIndex - WAIT_OBJECT_0;
CloseHandle(phNormal[nIndex]);
}

如参数设置,假设我等待10个进程结束,这10个进程已经创建好了,分别是进程phNormal[0]~phNormal[9]。

情况这样:
第一次循环,如果同时有3个进程结束了,分别是1、2和3。那么WaitForMultipleObjects()的返回值,指的是phNormal[1]退出了,即等待的对象集中最小的那个对象,这个我明白。

接下来进入第二次循环,假设没有其它进程退出,那么上次循环就已经退出的2和3号进程还能被WaitForMultipleObjects()等待吗?此时phNormal[2]已经退出的信息,还能被WaitForMultipleObjects()捕捉到吗??

(如有什么没有表述清楚的,还望指正。)
...全文
634 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
meloyi 2016-09-05
  • 打赏
  • 举报
回复
引用 1 楼 yaozhiyong110 的回复:
能 不然这个api还有什么意义? 你很容易就能验证啊...
不能,需要清理掉已经返回的句柄,不然一直都会返回最小值。已经经过测试了
赵4老师 2016-09-01
  • 打赏
  • 举报
回复
研读《Windows核心编程》
yaozhiyong110 2016-08-31
  • 打赏
  • 举报
回复
能 不然这个api还有什么意义? 你很容易就能验证啊...

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧