首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows C++中线程的退出代码

Windows C++中线程的退出代码
EN

Stack Overflow用户
提问于 2011-05-25 03:13:01
回答 2查看 8.2K关注 0票数 2

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

代码语言:javascript
复制
WaitOnMultipleObject(...);

现在如果我想知道所有线程的返回码的状态。如何做到这一点?

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

代码语言:javascript
复制
 GetExitCodeThread(
  __in   HANDLE hThread,
  __out  LPDWORD lpExitCode
);

现在检查lpExitCode的成功/失败代码?

干杯,悉达多

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-25 03:17:35

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

代码语言:javascript
复制
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()的句柄数组以等待下一个线程完成时,从该句柄数组中删除该线程句柄。

票数 2
EN

Stack Overflow用户

发布于 2011-05-25 03:17:34

我需要在循环中循环所有线程的句柄吗?

GetExitCodeThread( __in HANDLE hThread,__out LPDWORD lpExitCode );

是。

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

https://stackoverflow.com/questions/6115614

复制
相关文章

相似问题

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