假设我创建了多个线程。 现在我正在等待使用多个对象:
WaitOnMultipleObject(...);
现在,如果我想知道所有线程的返回代码的状态。怎么做?
我是否需要循环遍历循环中所有线程的句柄。
GetExitCodeThread(
__in HANDLE hThread,
__out LPDWORD lpExitCode
);
现在检查lpExitCode
是否有成功/失败代码?
干杯, 悉
答案 0 :(得分:3)
我是否需要为所有线程循环 处理循环。
GetExitCodeThread( __in HANDLE hThread, __out LPDWORD lpExitCode );
是
答案 1 :(得分:2)
如果要等待线程退出,只需等待线程的句柄。等待完成后,您可以获得该线程的退出代码。
DWORD result = WaitForSingleObject( hThread, INFINITE);
if (result == WAIT_OBJECT_0) {
// the thread handle is signaled - the thread has terminated
DWORD exitcode;
BOOL rc = GetExitCodeThread( hThread, &exitcode);
if (!rc) {
// handle error from GetExitCodeThread()...
}
}
else {
// the thread handle is not signaled - the thread is still alive
}
通过将一组线程句柄传递给WaitForMultipleObjects()
,可以将此示例扩展为等待完成多个线程。在从WAIT_OBJECT_0
返回时使用来自WaitForMultipleObjects()
的适当偏移量确定哪个线程已完成,并在调用它时等待下一个线程时从传递给WaitForMultipleObjects()
的句柄数组中删除该线程句柄完成。