【发布时间】:2020-12-07 02:31:47
【问题描述】:
我正在学习 C++,目前正在开发一个具有两个并发线程的程序。在 Visual Studio 的调试窗口中,它总是告诉我:
线程 x 以代码 0 (0x0) 退出。
我想从我的线程返回一个退出代码,以便 Visual Studio 可以在控制台中显示退出代码,就像它对这些其他线程所做的那样。我已经对其进行了测试,仅从线程函数返回 int 并不会改变 Visual Studio 的输出。它仍然说有问题的线程以代码 0 退出。
我也用谷歌搜索了它,但我找不到任何关于如何做到这一点的信息(至少不是thread.h)。
如果不可能,这没什么大不了的,因为我总是可以从线程返回一个值并将其镜像到进程退出代码中,但是如果不可能,那么我看到的退出代码是什么在调试窗口中?
【问题讨论】:
-
不,在标准 C++ 中没有类似的东西。 C++ 库有一个单独的 promise/future 模板对象,您可以使用它来实现此功能。
-
@SamVarshavchik 我不知道 StackOverflow 是如何工作的,但你是关闭这篇文章的人吗?因为我的问题是专门关于返回退出代码的,而不仅仅是一般的返回值。另外,我仍在等待帖子中最后一个问题的答案,这与链接的帖子无关。我认为这篇文章不应该被关闭,你能打开它吗?
-
void ExitThread(DWORD dwExitCode);首先阅读文档! docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/…
-
Windows 不是唯一的平台。例如,在 Linux 中,没有线程退出代码之类的东西。这就是标准没有线程退出代码概念的原因。
std::thread可以调用void函数,当你的函数返回除void之外的任何内容时,返回值被简单地丢弃。 -
@Evg 虽然在Linux中线程没有“退出代码”是正确的,但线程的返回值是
void*,而不是可以用来表示和退出代码。
标签: c++ multithreading