第一阶段:标准库基础 (C++11)
这是起点,你需要熟悉 <thread> 库。
-
核心概念: 什么是线程?主线程与子线程的关系。
-
API:
std::thread的创建、join()(等待线程结束)、detach()(分离线程)。 -
生命周期: 理解如果
std::thread对象销毁前没有 join 或 detach 会导致程序崩溃 (terminate)。
第二阶段:同步与互斥 (数据安全)
多线程最难的地方不是开启线程,而是如何安全地访问共享数据 。如果不加控制,就会发生竞态条件 (Race Condition)。
-
互斥锁:
std::mutex。 -
RAII 锁管理(必须掌握): 永远不要手动
lock()和unlock(),要使用std::lock_guard和std::unique_lock。 -
条件变量:
std::condition_variable,用于线程间的通信(例如:生产者-消费者模型)。
第三阶段:异步与高级抽象 (C++11/14/17)
有时候你不需要管理原始线程,只需要结果。
-
Future/Promise:
std::future,std::promise,std::packaged_task。 -
自动异步:
std::async(最简单的多线程启动方式)。 -
原子操作:
std::atomic(对于简单的整数加减,比锁快得多)。
第四阶段:实战与架构 (设计模式)
-
线程池 (Thread Pool): 避免频繁创建销毁线程的开销。
-
死锁 (Deadlock): 如何避免多个锁互相等待。
-
C++20 新特性:
std::jthread(自动 join),std::latch,std::barrier。