【问题标题】:Does std::thread::join throw std::invalid_argument when it is not joinable?当 std::thread::join 不可连接时,它会抛出 std::invalid_argument 吗?
【发布时间】:2021-04-20 16:33:37
【问题描述】:

根据 STL 文档,std::thread::join 在不可加入时会抛出 std::invalid_argument,我很难理解其设计原理。

问题:

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

【问题讨论】:

  • std::terminate 就像它听起来的那样:它无条件地终止程序。至少可以捕获一个异常。

标签: c++11


【解决方案1】:

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

是的。

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

如果你愿意,有一个隐含的论点:*this

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

如果你没有捕捉到异常,std::terminate被调用。

Demo

【讨论】:

  • 感谢澄清,我现在明白了。
猜你喜欢
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 2014-11-12
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多