飞豹客 · 课能看,资料也能带走
飞豹客算法数学 会员免费

系统化学习C++多线程编程 从基础概念到高级应用 打造高效可靠的多线程系统

如果你写过 C++,但一遇到多线程就心里没底——线程该什么时候开、锁该加在哪、程序跑起来偶尔崩一次又复现不了——这门课针对的就是这类场景。它不讲语言入门,而是把并发这件事拆开:从线程的创建与生命周期,到互斥锁、条件变量、异步任务、线程池,最后落到一个完整的批量转码案例上。学它的价值不在于多认识几个

单课价¥29.90新品 上架
会员价 会员免费开通会员后本篇可直接下载套餐详情
119 人关注 更新于 2026-05-25 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

会员可免费下载本篇月会员可按日额度下载(每篇扣 1 次)。

开通会员 ›
购买本课销量 0 · 永久有效
会员价 · 单课标价 ¥29.90

会员 A · 按档位折扣

永久免费可下
年免费可下
月免费可下

游客按标价购买,不享受上表折扣。

支付成功后自动发放网盘链接,链接失效可找客服免费补

正版保障 极速发货 售后无忧

如果你写过 C++,但一遇到多线程就心里没底——线程该什么时候开、锁该加在哪、程序跑起来偶尔崩一次又复现不了——这门课针对的就是这类场景。它不讲语言入门,而是把并发这件事拆开:从线程的创建与生命周期,到互斥锁、条件变量、异步任务、线程池,最后落到一个完整的批量转码案例上。学它的价值不在于多认识几个 API,而在于你能说清楚一段并发代码为什么这么写、哪里可能出问题。

适合什么基础,不适合什么基础

前提是你能独立写出带类、模板、智能指针的 C++ 代码,理解栈与堆、对象生命周期,最好用过 std::thread 或至少见过。如果你连引用和拷贝的区别都还没理顺,先补语言基础再来,否则后半段的线程池和异步结果获取会变成抄代码。另一方面,如果你已经能熟练手写线程池、用 futures 做过任务编排,这门课对你偏基础,收益有限。它面向的是「会用但不成体系」的中间层:知道有锁,但不确定锁的粒度;知道有线程池,但没自己搭过一个。

建议的观看顺序与练习方式

不必按目录从头顺播。先把线程基础、互斥锁与条件变量这几块过一遍,重点看锁的保护范围、死锁是怎么形成的、条件变量为什么必须配合谓词判断——这几处是后面所有内容的底座。接着看异步任务与结果获取,理解任务提交后返回值是怎么拿到的、异常怎么传递。线程池部分建议边看边自己写一遍:先写固定线程数的版本,再考虑任务队列的同步,最后对照课程里的实现找差距。智能指针管理线程对象那部分容易被跳过,但它直接关系到资源释放时机,值得单独看。

练习不要只看不写。每看完一个机制,自己造一个小场景验证:多个线程同时累加一个计数器,观察不加锁的结果;用条件变量实现一个简单的生产者消费者;把一批任务丢进自己写的线程池,统计耗时。转码案例可以当作综合练习,但前提是你本地有可用的转码环境,没有的话就把它当作线程池任务调度的思路参考,重点是任务怎么切分、结果怎么汇总,而不是工具本身。

学完能独立做什么

比较现实的目标是:你能为一个已有的计算密集型或 IO 密集型的 C++ 程序加上并发处理,自己决定线程数量、任务划分方式和同步策略,并能判断什么时候该用锁、什么时候该用原子操作、什么时候干脆避免共享状态。你能读懂别人写的线程池代码,也能从零搭一个够用的版本,并知道它在高负载下可能在哪里出问题。这些能力对应的是服务端、音视频处理、后台工具这类岗位里真实存在的并发需求,而不是一句笼统的「掌握多线程」。需要提醒的是,并发问题很大一部分靠调试和压测暴露,课程给的是方法和模式,真正的熟练还得靠你在自己的项目里反复踩。

课程目录

课程目录38 集
  • 📁 PART1 5-8 完成线程池案例基于ffmpeg工具多线程转码视频_84895_3202.mp4
  • [20.5 MB] 5-7 基于线程池实现音视频批量转码测试任务_84895_9286.mp4
  • [36.0 MB] 5-6 异步获取线程池中任务执行结果_84895_1181.mp4
  • [14.0 MB] 5-5 使用智能指针管理线程对象和任务对象的生命走起_84895_9570.mp4
  • [25.4 MB] 5-4 线程池中在在运行的任务数量获取使用atomic原子变量_84895_5113.mp4
  • [10.1 MB] 5-3 完成线程池退出并等待任务处理结束利用lambada表达式_84895_2017.mp4
  • [25.1 MB] 5-2 完成线程池任务调度_84895_8523.mp4
  • [30.3 MB] 5-1 完成线程池的初始化和启动_84895_3003.mp4
  • [23.3 MB] 4-7 线程池实现步骤说明_84895_4181.mp4
  • [19.2 MB] 4-6 c++17for_each多核运算示例编码base16_84895_7768.mp4
  • [53.2 MB] 4-5 c++11实现多核base16编码并与单核性能测试对比_84895_6027.mp4
  • [46.5 MB] 4-4 c++多核计算分析并实现base16编码_84895_2961.mp4
  • [49.9 MB] 4-3 async创建异步线程替代thread_84895_4238.mp4
  • [32.9 MB] 4-2 packaged_task 异步调用函数打包_84895_9884.mp4
  • [31.3 MB] 4-1 promise和future多线程异步传值_84895_3604.mp4
  • [28.6 MB] 3-9 条件变量应用线程通信解决线程退出时的阻塞问题_84895_9638.mp4
  • [30.2 MB] 3-8 condition_variable代码示例读写线程同步_84895_5081.mp4
  • [43.8 MB] 3-6 项目案例线程通信使用互斥锁和list实现线程通信_84895_8455.mp4
  • [51.8 MB] 3-5 c++17scoped_lock解决互锁造成的死锁问题_84895_1359.mp4
  • [36.8 MB] 3-7 条件变量应用场景_生产者消费者信号处理步骤_84895_2616.mp4
  • [27.0 MB] PART1必看.png [493.5 KB] 3-3 unique_lock可临时解锁控制超时的互斥体包装器_84895_6892.mp4
  • [34.9 MB] 3-4 C++14shared_lock共享锁包装器_84895_4809.mp4
  • [12.9 MB] 3-2 c++11RAII控制锁lock_guard_84895_1776.mp4
  • [26.7 MB] 2-5 共享锁shared_mutex解决读写问题_84895_8120.mp4
  • [24.2 MB] 3-1 手动实现RAII管理mutex资源_锁自动释放_84895_3371.mp4
  • [21.6 MB] 2-4 超时锁timed_mutex和可重入锁recursive_84895_1050.mp4
  • [32.8 MB] 2-2 竞争状态和临界区介绍_互斥锁mutex代码演示_84895_5904.mp4
  • [21.4 MB] 2-3 互斥锁的坑_线程抢占不到资源原因和解决方法_84895_3984.mp4
  • [16.3 MB] 2-1 多线程的状态及其切换流程分析_84895_7049.mp4
  • [10.5 MB] 1-7 lambda临时函数作为线程入口_84895_7717.mp4
  • [14.2 MB] 1-6 使用成员函数作为线程入口并封装线程基类接口_84895_9219.mp4
  • [39.8 MB] 1-5 线程函数传递指针和引用_84895_1311.mp4
  • [22.5 MB] 1-4 全局函数作为线程入口分析参数传递内存操作_84895_5600.mp4
  • [23.2 MB] 1-3 thread 对象生命周期和线程等待和分离_84895_6636.mp4
  • [26.5 MB] 1-2 为什么要使用多线程_第一个线程代码示例_84895_5362.mp4
  • [25.2 MB] 1-1 课程介绍_84895_2673.mp4
  • [15.3 MB] PART2.zip
  • [3.5 MB] 适合人群 C++开发者 系统架构师 对多线程编程感兴趣者 学习收获 掌握C++多线程编程基础 学会使用线程池和异步编程 构建高效可靠的多线程系统 祝您学习愉快! 学有所成,前程似锦!