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

C++多线程编程:从创建到管理的终极指南

在高性能计算时代,掌握多线程编程是提升程序效率的必修课!本文将手把手教你如何用C++11标准库轻松创建和管理线程,告别单线程的“龟速”,让代码跑出多核CPU的性能!


一、多线程为何重要?
  • 充分利用多核CPU:现代计算机普遍支持多核并行,多线程可让程序性能指数级提升。
  • 提升用户体验:避免主线程阻塞,让界面操作与后台任务并行不悖。
  • 解决计算密集型任务:如图像处理、大数据分析等场景。

二、创建线程的3种方式
1. 基础语法:用std::thread启动线程
#include <thread>
#include <iostream>

void hello() {
   
    std::cout << "Hello from thread!" << std::endl;
}

int main() {
   
    std::thread t(hello);  // 创建线程
    t.join();              // 等待线程结束
    return 0;
}

💡 关键点

  • 线程对象std::thread t创建后立即自动启动
  • join()必须调用,否则程序会崩溃!

2. 传递参数:让线程更灵活
#include <string>
void print(const std::string& msg, int times) {
   
    for(int i=0; i<times; ++i) std::cout << msg << std::endl;
}

int main() {
   
    std::thread t(print, "Hello", 3);  // 参数会被复制
    t.join();
    
    // 需要修改参数时,用std::ref传递引用
    int count = 5;
    std::thread t2(print, "ByRef", std::ref(count));
    t2.join();
    return 0;
}

3. Lambda表达式:匿名函数的优雅用法
int main() {
   
    int x = 42;
    std::thread t([x]

相关文章:

  • VLAN章节学习
  • 万象更新(一)VTK 坐标轴、相机方向坐标轴、立方体坐标轴
  • 基于 C++ 类的程序设计模式与应用研究
  • Python个人学习笔记(19):模块(正则表达式)
  • JVM类加载过程详解
  • 浙江大学DeepSeek公开课第二季第二期将于下周一直播!
  • 【redis】主从复制:全量复制、部分复制、实时复制详解
  • extern关键字的用法
  • 机器人的手眼标定——机器人抓取系统基础系列(五)
  • Unity Animation的其中一种运用方式
  • 【吾爱出品】【阿修】兔子vCard editor by(通讯录编辑工具)
  • 【RH124】 第五章 创建、查看文本文件
  • Android Launcher3 HotSeat文件夹创建禁止方案全解析
  • WordPress二次开发中常用到的一些变量和函数
  • 算法刷题整理合集(六)
  • 如何提升需求管理能力
  • 编辑距离算法的正确性证明
  • 计算机网络-2 物理层
  • 01_JavaScript
  • WMS WCS系统架构
  • 浦发银行一季度净利175.98亿增1.02%,不良率微降
  • 习近平就伊朗发生严重爆炸事件向伊朗总统佩泽希齐扬致慰问电
  • 药明康德一季度净利增长89%,在手订单增超四成至523亿元
  • 四川省社科联期刊:不建议在读硕士、博士将导师挂名为第一作者
  • 流浪猫给车主造成困扰,长春一小区拟投药应对?律师:此举欠妥
  • 古籍新书·2025年春季|中国土司制度史料集成