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有内置停止标记。 而且析构会自动调用停止。

相关推荐
Tri_Function5 分钟前
背包:从入门到实战
c++
j7~14 分钟前
【C++ 标准项目】发布订阅消息队列 (篇七):项目创建与基础工具模块搭建
开发语言·c++·log4j·uuid·protobuf·helper工具·消息定义类型和交换机类型定义
leisoo809717 分钟前
股票筹码分布怎么用获利比例成本区间与集中度实战 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·开源
Lazionr29 分钟前
unordered_map和unordered_set的使用
开发语言·c++·算法
进化中的刀盾兽44 分钟前
从零实现 C++ Json-Rpc(九):从 TCP 字节流中拆出完整消息——MuduoBuffer 与 LVProtocol
c++·rpc
Xiu Yan1 小时前
Python 数据分析:数据分析步骤
开发语言·python·数据分析
黑妹天下第一乖1 小时前
小智改造实战解读-用kokoro-onnx替换云端 TTS 的完整记录
大数据·开发语言·人工智能·python·交互
郑州光合科技余经理1 小时前
本地生活平台搭建:跨业态用户标识怎么贯通
java·开发语言·前端·后端·uni-app·php·ai编程
HZY1618yzh1 小时前
下一代编程语言出炉
c++·算法
深盾科技_Virbox1 小时前
云端与本地并行交付,软件许可管理如何实现统一运营?
java·大数据·开发语言·安全