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

相关推荐
xiaoye-duck5 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(上):初始化和全量响应
开发语言·网络·c++·语言模型
fpcc5 小时前
跟我学c++中级篇—streambuf在glog中的应用分析
开发语言·c++
吾与谁归in5 小时前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf
码匠许师傅5 小时前
【C++三方组件】OpenCV:计算机视觉的事实标准
c++
昂好的day5 小时前
WPF 从零入门(上):WPF 是什么、XAML 语法、布局与样式全解
开发语言·c#·wpf
飞浪纪元[FWC–FE]5 小时前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
fly-iot5 小时前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
云边有个稻草人5 小时前
Prometheus Pushgateway教程:离线任务指标上报、Shell与Python示例、远程访问
开发语言·python·prometheus
暴走约伯5 小时前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
C^h14 小时前
c++ string
开发语言·c++