跳至内容
模块 7

并发

编写正确、高效的多线程 C++ ── 线程、同步、原子操作和并行算法。

开始学习6 节课

线程与同步

  1. std::thread、std::jthread 与线程管理

    学习使用 std::thread 和 C++20 的 std::jthread 创建和管理线程。理解 join 与 detach 的区别、使用停止令牌的协作式取消、线程局部存储以及跨线程边界的异常处理。

  2. 互斥锁、锁与临界区

    掌握同步原语:mutex、lock_guard、unique_lock、scoped_lock、shared_mutex。学习保护共享数据、防止死锁,以及理解数据竞争与竞态条件的区别。

  3. 条件变量与生产者-消费者模式

    使用条件变量高效地协调线程。构建线程安全的生产者-消费者队列,处理虚假唤醒,并避免丢失唤醒问题。

异步、原子操作与并行

  1. std::async、std::future 与 std::promise

    使用更高级的并发抽象:通过 std::async 启动异步任务,通过 std::future 获取结果,以及通过 std::promise 手动设置值或异常。

  2. 原子操作与内存序

    理解使用 std::atomic 的无锁编程。掌握内存序(relaxed、acquire、release、seq_cst),使用 atomic_flag 实现自旋锁,并学习比较并交换(CAS)模式。

  3. 并行算法与执行策略

    利用 C++17 并行 STL 来并行化排序、变换和归约,使用执行策略。了解并行何时有帮助、阿姆达尔定律以及实用的线程池设计。