c++ - 是否可以从 C++ 中的线程返回退出代码?

标签 c++ multithreading

我正在学习 C++,目前正在开发一个具有两个并发线程的程序。在 Visual Studio 的调试窗口中,它总是告诉我:

The thread x has exited with code 0 (0x0).


我想从我的线程返回一个退出代码,以便 Visual Studio 可以在控制台中显示退出代码,就像它对这些其他线程所做的那样。我已经测试过了,只是返回一个 int从线程函数不会改变任何关于 Visual Studio 的输出。它仍然说有问题的线程以代码 0 退出。
我也用谷歌搜索了它,但我找不到任何关于如何做的事情(至少不是 thread.h )。
如果不可能,这没什么大不了的,因为我总是可以从线程返回一个值并将其镜像到进程退出代码中,但是如果不可能,那么我看到的退出代码是什么在调试窗口中?

最佳答案

您需要使用特定于平台的线程而不是 std::thread .
在 Windows 中,您将使用 CreateThread .在 Visual Studio 中有 _beginthread_beginthreadex (仅使用后者,不推荐 _beginthead),应该使用它来代替 CreateThread ,虽然目前没有太大区别。使用这些函数时,您只需从线程函数返回退出代码。或者,调用ExitThread_endthreadex .但这可能不安全,因为它不会执行任何后续代码,包括当前范围内对象的析构函数。

关于c++ - 是否可以从 C++ 中的线程返回退出代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65170364/

相关文章:

c++ - 如何使用指针到指针来传递矩阵?

c++ - 在 Qt 窗口中运行游戏循环

c++ - std::call_once 是阻塞调用吗?

windows - 栈和栈基地址

c++ - 并行线程互相停止

windows - 是否需要在 CPU 上安排等待 Windows 事件的线程从 sleep 中唤醒?

c++ - 并行计算大 vector 的总和

当它不是时,C++ 将其视为 const

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

android - 调试 Android native C++ : activate breakpoint