【发布时间】:2020-10-01 04:09:31
【问题描述】:
- 与
std::thread相比,它有哪些优势? - 是否会弃用现有的
std::thread?
【问题讨论】:
标签: c++ multithreading c++20
std::thread 相比,它有哪些优势?std::thread?【问题讨论】:
标签: c++ multithreading c++20
std::jthread 就像std::thread,只是没有愚蠢。看,std::thread 的析构函数会终止程序,如果你没有 join 或事先手动分离它。这导致了大量的错误,正如人们期望它加入破坏一样。
jthread 解决了这个问题;它默认加入销毁(因此名称:“加入线程”)。它还支持一种要求线程停止执行的机制,尽管没有强制执行(又名:您不能使另一个线程停止执行)。
目前没有计划弃用std::thread。
【讨论】:
stop_source,如果是这样,在代码中会是什么样子?
std::stop_token 作为函数的第一个参数,并定期检查stop_requested 是否为真