gpt4 book ai didi

c++ - Windows C++中线程的退出代码

转载 作者:可可西里 更新时间:2023-11-01 09:56:34 27 4
gpt4 key购买 nike

假设我创建了多个线程。现在我也在等待多个对象使用:

WaitOnMultipleObject(...);

现在如果我想知道所有线程的返回码的状态。怎么做?

我是否需要在循环中循环所有线程的句柄。

 GetExitCodeThread(
__in HANDLE hThread,
__out LPDWORD lpExitCode
);

然后检查 lpExitCode 以获取成功/失败代码?

干杯,悉达多

最佳答案

如果要等待线程退出,只需等待线程的句柄即可。等待完成后,您可以获得该线​​程的退出代码。

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(),可以将此示例扩展为等待多个线程完成。在从 WaitForMultipleObjects() 返回时使用距 WAIT_OBJECT_0 的适当偏移量找出哪个线程完成,并从传递给 WaitForMultipleObjects() 的句柄数组中删除该线程句柄 调用时等待下一个线程完成。

关于c++ - Windows C++中线程的退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115614/

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