在C++20中,我们得到了一个新的线程类std::jthread,它不同于旧的std::thread ,用于在析构函数中终止线程。因此,使用未命名的j线程对象和逗号操作符并行执行几个操作变得非常容易:#include <iostream>
std::jthreadVisual 2019在这里发出警告:
warning C4834: discarding return value of function with 'nodiscard' att
以下代码演示了该问题,在linux上使用boost.asio,boost版本1.74.0,gcc版本10.2.0进行了测试。auto wg = asio::make_work_guard(ioc); auto w1 = std::jthread{[&]() { ioc.run(); }}; auto w3
我正在开发一个库,它可以使用std::jthread (在C++20中新建)使用g++ 10.0.1。我已经将测试用例缩小为一个简单的线程创建和连接:#include <thread>
auto t = std::jthread#include <iostream> auto t = std::jthrea
在C++20中,std::jthread是作为std::thread的一个更安全的版本引入的;据我所知,std::jthread在线程退出时会自行清理。此外,还引入了协作取消的概念,以便std::jthread管理处理底层线程状态的std::stop_source,该std::stop_source公开了外部人员可以用来明智地读取线程状态的std::stop_tokeninner_tok.stop_requested()) { } auto thread