C++多线程并发编程入门(目录)

C++自学精简实践教程 目录(必读)

一、教程目标

1 普及多线程基本概念

2 让学生亲自接触,直观感受多线程的特点。

3 由浅入深的亲历多线程的问题,亲自解决多线程的问题。

4 掌握基本的并发开发方法。

5 具备解决工作中大部分并发问题的能力。

二、教程特点

1 代码量少,容易自己实际操作。

2 每篇文章同时给出 STL/Windows/Linux 三种对比实现。保证让你看懂公司代码。

3 作者天天在各种多线程产品代码里穿梭,只给最实用精简的用法。

1 平台相关的多线程函数

下面的代码需要同时在 Windows Ubuntu 上验证通过,而且工程都是基于 CMake的。

部分代码只有Windows版本,部分代码只有Linux版本。

比如创建线程,我们需要使用三个版本的线程来感受接口差异和共同之处:

1 STL std::thread

2 Windows CreateThread

3 Linux pthread_create

2 平台相关的开发环境

由于我们的代码有些只能运行在 Windows 环境,有些只能运行在Linux 环境,所以我们准备了两套开发环境。

自始至终,我们都只需要有一个Windows 10 或 Windows 11 即可。

在 Windows 环境上,我们使用 Visual Studio 2022 来开发 STL版本的代码(std::thread),以及 Windows 平台的代码(CreateThread)。

Linux 环境的代码开发调试,我们会在Windows上另外搭建开发环境来实现。主要包括下面的内容,参考 下面的“开发环境搭建”部分的内容。

三、开发环境搭建

我提供两个开发Linux 环境代码的开发环境搭建教程,大家自己任选其中的一个。

从环境搭建的简单程度来说,个人推荐第一个:使用 Windows + Visual Studio 2022 + WSL2 来开发 Linux代码。

1 基于Visual Studio 2022 + WSL2 的Ubuntu开发环境

Visual Studio 2022 在Windows上编译调试WSL2 CMake Linux工程

2 基于WSL2+Qt5 的 Ubuntu 开发环境

Windows开发调试纯Linux代码(WSL+Qt+MobaXterm)环境搭建(超详细教程)

推荐一个免费的 Windows 嵌入式 Linux QtCreator 开发环境_哔哩哔哩_bilibili​

四、线程入门

只有一个线程的程序(main函数)

1 线程并发

1.1 单独创建一个线程并执行

1.2 理解 std::thread::join

练习1 自动记录上班打卡时间(期待ing)

1.3 单独创建2个线程并执行(STL/Windows/Linux)

1.4 创建10个线程并执行(STL/Windows/Linux)

1.5 理解 std::thread::detach

2 线程同步

2.1 两个线程并发(乱序)执行:乱箭穿心 std::thread

2.2 两个线程同步执行:condition_variable 解决乱箭穿心(STL/Windows/Linux)

2.3 如何优雅的退出线程(condition_variable )

2.4 死锁与防范

3 原子操作

项目1 C++极简内存泄露检测工具(34行代码实现)

4 并发发挥多核CPU的优势

4.1 使用多线程std::thread发挥多核计算优势(题目)

4.2 使用多线程std::thread发挥多核计算优势(解答)

五、Linux 多路I/O

linux eventfd

linux select 模型极简案例

linux poll 模型极简案例

linux epoll 模型极简案例

六、项目实战

1 播放器

项目1 Qt YUV播放器(期待ing)

项目2 ffmpeg 拉流(期待ing)

项目3 Qt+ffmpeg拉流播放器(期待ing)

2 炒股笔记

项目1 炒股笔记软件(期待ing)

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值