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()捕捉到嗎??
(如有什么沒有表述清楚的,還望指正。)
uj5u.com熱心網友回復:
能 不然這個api還有什么意義? 你很容易就能驗證啊...uj5u.com熱心網友回復:
研讀《Windows核心編程》uj5u.com熱心網友回復:
不能,需要清理掉已經回傳的句柄,不然一直都會回傳最小值。已經經過測驗了
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/126417.html
標籤:進程/線程/DLL
