c++中的std::jthread是什么_c++ C++20可中断线程与RAII【多线程】

admin 百科 11
std::jthread是C++20引入的增强型线程类,核心特性为析构时自动join()保障RAII安全,并原生支持协作式中断(通过stop_token和request_stop())。

c++中的std::jthread是什么_c++ C++20可中断线程与RAII【多线程】-第1张图片-佛山资讯网

std::jthread 是 C++20 引入的线程类,全称是 joining thread,本质是 std::thread 的增强版,核心改进两点:自动 join()(RAII 安全) + 原生支持线程可中断(cooperative interruption)。

自动 join —— 不用再手动调用 join 或 detach

传统 std::thread 对象析构前必须明确处于 joinable() 状态,否则会调用 std::terminate(),容易出错。而 std::jthread 在析构时自动执行 join(),确保资源安全回收。

例如:

void worker() { std::this_thread::sleep_for(1s); }
void f() { std::jthread t{worker}; } // 函数结束,t 析构 → 自动 join,安全

内置中断机制 —— 无需自己传 flag 或条件变量

std::jthread 构造时可接收一个带 std::stop_token 参数的可调用对象,运行时可通过 request_stop() 主动通知线程退出,线程内部用 stop_token 检查是否被请求中断。

立即学习“C++免费学习笔记(深入)”;

关键点:

标签: c++20 jthread ai c++

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~