c++ jthread

测试下c++ 20的jthread。代码:

cpp 复制代码
void testJThread(void) {
    auto worker = [](std::stop_token st) { // 第一个参数是在线程内部自动传参的,也可以不要这个参数。
        while (!st.stop_requested()) // 查询停止标记
        {
            std::cout << "子线程运行中..." << std::endl;
            std::this_thread::sleep_for(std::chrono::milliseconds(400));
        }
        std::cout << "子线程检测到停止请求,主动退出循环,return" << std::endl;
    };

    {
        std::jthread jth(worker);
        std::cout << "当前线程:sleep 1秒,子线程继续" << std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(1)); 
    } // 测试离开作用域,该线程对象执行析构函数
      //  析构函数中自动调用request_stop() 置停止标记, 并自动调用join() 阻塞
      // 也可以不这样, 手动调用request_stop()发停止信号
    std::cout << "jthread 析构完成,回到主线程\n";
}

运行:

ok. jthread有内置停止标记。 而且析构会自动调用停止。

相关推荐
漂流瓶jz22 分钟前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
朽棘不雕31 分钟前
进一步了解模板
c++
Bruce_Liuxiaowei2 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱
开发语言·python·语法糖
aramae3 小时前
MySQL内置函数(7)
开发语言·笔记·后端·mysql·其他
汉克老师3 小时前
CSP-J 2026 初赛试题解析(第一部分:选择题(8-15))精讲
c++·csp-j·小学生·学c++编程
wabs6664 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
风合星语5 小时前
2026 ROS 2 Lyrical C++ 入门(五):Action 实战——任务反馈、取消与超时处理
c++·机器人·ros2·异步编程·lyrical
91刘仁德6 小时前
C++ 继承和多态 设计模式
c语言·c++·笔记
码行山野赴时序归途6 小时前
链表家族收官篇:循环链表
c语言·开发语言·数据结构·链表
景熙55236 小时前
单体项目编写思路和落地形式
java·开发语言