【问题标题】:What is std::jthread in c++20?c++20 中的 std::jthread 是什么?
【发布时间】:2020-10-01 04:09:31
【问题描述】:
  1. std::thread 相比,它有哪些优势?
  2. 是否会弃用现有的std::thread

【问题讨论】:

标签: c++ multithreading c++20


【解决方案1】:

std::jthread 就像std::thread,只是没有愚蠢。看,std::thread 的析构函数会终止程序,如果你没有 join 或事先手动分离它。这导致了大量的错误,正如人们期望它加入破坏一样。

jthread 解决了这个问题;它默认加入销毁(因此名称:“加入线程”)。它还支持一种要求线程停止执行的机制,尽管没有强制执行(又名:您不能使另一个线程停止执行)。

目前没有计划弃用std::thread

【讨论】:

  • @Waqar:你可以这样看,但不一定是这样实现的。
  • f 想知道尝试塞入暂停执行功能的聪明主意是谁。从来没有工作。它在 30 年的线程中没有任何工作。每个人都必须像往常一样使用自己的显式条件变量。
  • > 支持一种机制来要求线程停止执行我假设您在这里指的是stop_source,如果是这样,在代码中会是什么样子?
  • @ZanLynx 它一个明确的条件变量,它传递给它运行的函数。
  • @Waqar 您将std::stop_token 作为函数的第一个参数,并定期检查stop_requested 是否为真
猜你喜欢
  • 2020-03-19
  • 1970-01-01
  • 2020-08-06
  • 2021-12-15
  • 2021-05-24
  • 2020-01-10
  • 2020-10-29
相关资源
最近更新 更多