现代 C++ 实战开发指南
目录
1. 1. 基础知识与陷阱
2. 2. 并发编程
2.1. 线程基础
2.2. 互斥锁与锁管理
2.3. 原子操作
2.4. 条件变量
2.5. 异步编程与 Future
2.6. 协程 (C++20)
2.7. 并发模式
2.8. 并发编程陷阱
3. 3. 性能调优
4. 4. 内存管理
5. 5. 网络编程
6. 6. 常用库
7. 7. 速查表
8. 参考资源
现代 C++ 实战开发指南
2.
2. 并发编程
查看页面源码
2.
2. 并发编程
C++ 提供了强大的并发编程支持,从底层的线程原语到高级的异步编程模型。 本章深入讲解多线程编程的核心概念和最佳实践。
Contents:
2.1. 线程基础
2.1.1. std::thread 基本用法
2.1.2. 线程的生命周期
2.1.3. 参数传递
2.1.4. 线程局部存储
2.1.5. 获取线程信息
2.1.6. 线程休眠
2.1.7. 最佳实践
2.2. 互斥锁与锁管理
2.2.1. std::mutex 基本用法
2.2.2. RAII 锁管理
2.2.3. 其他互斥锁类型
2.2.4. 死锁避免
2.2.5. 线程安全的单例模式
2.2.6. 锁的性能考虑
2.3. 原子操作
2.3.1. std::atomic 基础
2.3.2. 原子操作类型
2.3.3. 内存序 (Memory Order)
2.3.4. 无锁数据结构示例
2.3.5. std::atomic_flag
2.3.6. 原子智能指针 (C++20)
2.3.7. 性能考虑
2.4. 条件变量
2.4.1. 基本用法
2.4.2. wait 的变体
2.4.3. 生产者-消费者队列
2.4.4. 常见陷阱
2.4.5. std::condition_variable_any
2.4.6. C++20: std::counting_semaphore
2.4.7. C++20: std::latch 和 std::barrier
2.5. 异步编程与 Future
2.5.1. std::async
2.5.2. 启动策略
2.5.3. std::future
2.5.4. std::promise
2.5.5. std::shared_future
2.5.6. std::packaged_task
2.5.7. 并行算法 (C++17)
2.5.8. 最佳实践
2.6. 协程 (C++20)
2.6.1. 协程基础概念
2.6.2. 实现简单的 Generator
2.6.3. 实现简单的 Task
2.6.4. 自定义 Awaitable
2.6.5. 协程与异步 I/O
2.6.6. 协程使用库
2.6.7. 协程最佳实践
2.7. 并发模式
2.7.1. 线程池
2.7.2. 生产者-消费者模式
2.7.3. 读写锁模式
2.7.4. 双缓冲模式
2.7.5. Active Object 模式
2.7.6. Monitor 模式
2.7.7. Fork-Join 模式
2.8. 并发编程陷阱
2.8.1. 数据竞争
2.8.2. 死锁
2.8.3. 竞态条件
2.8.4. 内存可见性问题
2.8.5. 优先级反转
2.8.6. 常见错误模式
2.8.7. 调试并发问题