当前位置: 首页 > news >正文

C++11 的线程管理(`std::thread`)

之前我研究了机器人开发中的 ROS2(Jazzy)系统相关内容。并将官网中比较重要的教程和概念,按照自己的学习顺序翻译成了中文,并进行了整理和记录。我在记录的过程中,还针对一些不太好理解的部分进行了额外的研究和补充说明。到目前为止,已经整理了20多篇文章。如果你想回顾之前的内容,可以查阅主页中 ROS2(Jazzy)相关文章。

在研究 ROS2 的过程中,我发现它使用了不少 C++11 的新特性。这让我意识到,深入掌握这些特性对于深入理解 ROS2 的实现原理和优化代码非常重要。

因此,我萌生了撰写 C++11 系列文章的想法。目前已经完成了以下几篇文章:

  1. C++11 ROS2性能狂飙:C++11移动语义‘偷梁换柱’实战
  2. C++11 Lambda 表达式 以及 std::functionstd::bind
  3. C++11 智能指针:std::unique_ptrstd::shared_ptrstd::weak_ptr

而本文是第四篇,主要总结的是 C++11 的线程管理(std::thread

C++11 的线程管理

C++11 引入了全面的多线程支持,使并发编程成为语言标准的一部分。核心组件包括线程管理(std::thread)、原子操作(std::atomic)和同步机制(互斥锁、条件变量)。

线程管理类 std::thread,用于创建和管理操作系统线程。它提供了跨平台的线程操作接口,消除了对平台特定 API(如 POSIX pthreads 或 Windows Threads)的依赖。

线程创建

我们可以通过传递可调用对象来构造 std::thread 线程实例,比如函数、Lambda、函数对象:

#include <thread>// 函数形式
void print(int num, const std::string& str) {std::cout << num << " " << str << "\n";
}// Lambda 形式
auto lambda = [](float f) { /*...*/ };int main() {// 创建线程并立即执行std::thread t1(print, 42, "Hello");  // 值传递std::string msg = "World";std::thread t2([&msg]() {            // 引用捕获std::cout << msg << "\n";});t1.join();t2.join();
}

当我们构造 std::thread 实例时,可以使用以下几种数据传递机制:

  • 默认行为:参数按值拷贝
  • 传递引用:需使用 std::ref 包装
  • 移动语义:使用 std::move 避免拷贝
void process_data(

相关文章:

  • Cesium快速入门到精通系列教程九:Cesium 中高效添加和管理图标/标记的标准方式​​
  • 【Linux】进程优先级和切换调度
  • android关于native中Thread类的使用
  • C++ 环境配置
  • Visual studio 中 使用QT插件 编辑UI文件打开 Qt Designer 报错 问题解决方案
  • 论文精读Lami-Detr:Open-Vocabulary Detection with Language Model Instruction
  • 【量化】策略交易之动量策略(Momentum)
  • YOLOv2 中非极大值抑制(NMS)机制详解与实现
  • n8n 从 Docker 到 Node.js 本地环境迁移指南
  • Qt .pro配置gcc相关命令(三):-W1、-L、-rpath和-rpath-link
  • std::shared_ptr引起内存泄漏的例子
  • [CVPR 2025] DeformCL:基于可变形中心线的3D血管提取新范式
  • AI应用:计算机视觉相关技术总结
  • 蓝桥杯国赛前一晚知识点准备(十六届python)
  • 灵敏度分析
  • Codeforces Round 1030 (Div. 2)
  • STM32项目---汽车氛围灯
  • Flutter JSON解析全攻略:使用json_serializable实现高效序列化
  • MySQL 调优笔记
  • 项目拓展-简易SQL监控,P6SPY拦截所有jdbc连接并打印执行SQL
  • 毕业设计资料网站有哪些/怎么创建一个网站
  • 条件查询 php网站源码/杨谦教授编的营销课程
  • 房地产型网站建设/企业网站模板 免费
  • 个人网站 怎么备案/郴州seo外包
  • 网站建设在哪里/网络推广员招聘
  • 汉中建网站/seo网站关键词优化工具