C++20 std::jthread与自动join
请介绍C++20引入的std::jthread及其相比std::thread的优势。
回答
我还是少年
std::jthread(joining thread)是C++20对std::thread的改进:
std::jthread jt([]{
std::this_thread::sleep_for(1s);
std::cout << "done";
});
// 析构时自动调用join(),无需显式管理
核心优势:
- RAII自动join:析构函数自动调用
join(),避免忘记join导致的terminate - 可中断:内置
std::stop_token支持协作式取消std::jthread jt([](std::stop_token st) { while (!st.stop_requested()) { // 工作循环 } }); jt.request_stop(); // 发出取消信号 - 移动语义支持:同
std::thread
推荐新项目默认使用std::jthread替代std::thread。