有什么办法可以知道线程创建成功还是失败?

Is there any way can know if the thread is created success or failure?

我正在使用 std::thread 创建一个线程,但看起来没有 API 可以判断此操作是成功还是失败。有什么办法可以知道这些信息吗?

reference std::thread 构造函数:

std::system_error if the thread could not be started.

这是C++中的普遍做法。当构造函数失败时,您会引发异常,否则您的对象将处于尴尬的无效状态,而标准库通常会避免这种情况。

std::thread的构造函数在失败的情况下抛出异常。

https://en.cppreference.com/w/cpp/thread/thread/thread

Exceptions 3)
std::system_error if the thread could not be started. The exception may represent the error condition std::errc::resource_unavailable_try_again or another implementation-specific error condition.

如果您使用 OS 特定的线程机制,您可以查看它们各自的 (C) API:
Windows
Linux

现代编程语言中有两种流行的方法来确定不可靠操作是否成功。

  • 有一个returned状态码或可读的错误码,表示操作是否成功。这是较旧的方法,在 C 程序中使用,因此 POSIX 接口中有许多使用。使用这种风格,函数和方法具有仅 尝试 执行操作的语义。在 return 上,从函数或方法中您知道已进行尝试,但不知道是否成功。

  • 当且仅当操作失败时抛出异常。这是较新的方法,用于编写良好的 C++ 程序和 C++ 标准库。使用这种风格,函数、方法和构造函数具有操作的语义。在 return 从函数、方法或构造函数中您知道操作已成功。

因此,在您的特定情况下,来自线程构造函数的 return 表示线程已成功创建,无需检查状态代码。