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

C++ 有什么方法可以知道线程创建成功还是失败?,c++,stdthread,C++,Stdthread,我正在使用std::thread创建一个线程,但似乎没有API可以判断此操作是成功还是失败。有没有办法知道这些信息?请参阅std::thread构造函数: std::system\u错误如果线程无法启动 这是C++的一般实践。当构造函数失败时,您会引发一个异常,否则您的对象将处于尴尬的无效状态,这是标准库通常避免的。std::thread的构造函数在失败时抛出一个异常 例外情况3) 如果线程无法启动。 异常可能表示错误条件 std::errc::资源\u不可用\u重试\u或其他 特定于实现的错

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

请参阅
std::thread
构造函数:

std::system\u错误
如果线程无法启动


<>这是C++的一般实践。当构造函数失败时,您会引发一个异常,否则您的对象将处于尴尬的无效状态,这是标准库通常避免的。

std::thread的构造函数在失败时抛出一个异常

例外情况3)
如果线程无法启动。 异常可能表示错误条件 std::errc::资源\u不可用\u重试\u或其他 特定于实现的错误条件

如果您使用特定于操作系统的线程机制,您可以查看它们各自的(C)API:


在现代编程语言中,有两种流行的方法可以确定不可靠操作的成功与否

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

  • 当且仅当操作失败时引发异常。这是一种更新的方法,用于编写良好的C++程序和C++标准库。使用这种风格,函数、方法和构造函数具有执行操作的语义。从函数、方法或构造函数返回时,您知道操作已成功


因此,在您的特定情况下,从线程构造函数返回意味着线程已成功创建,并且不需要检查状态代码。

构造函数在失败时引发
std::system\u错误。
看起来没有API
您知道异常吗?如果它没有引发异常,它成功了。如果它确实抛出异常,则它失败。