std::thread::join 在不可连接时是否抛出 std::invalid_argument ?

问题描述

根据 STL 文档,当 std::thread::join 不可连接时抛出 std::invalid_argument,我不容易理解它的设计原理。

问题:

  1. std::thread::join 没有输入参数,抛出 std::invalid_argument 异常的目的是什么?
  2. 当 std::thread::join 不可连接时,调用 std::terminate 不是更好吗?

解决方法

当 std::thread::join 不可连接时会抛出 std::invalid_argument 吗?

是的。

std::thread::join 没有输入参数,抛出 std::invalid_argument 异常的目的是什么?

如果您愿意,有一个隐式参数:*this

当 std::thread::join 不可连接时,调用 std::terminate 不是更好吗?

如果您没有捕获异常,std::terminate 被调用。

Demo