C++11引入了Boost线程库作为标准线程库,作者Anthony Williams为介绍其特性,于2012年出版了《C++ Concurrency in Action》一书,并顺应C++17于2019年2月出版了第二版。《C++ Concurrency in Action 2ed》前五章介绍了C++11线程库API的基本用法,后六章从实践角度介绍了并发编程的设计**,相比第一版多介绍了一些C++17特性,如std::scoped_lock、std::shared_mutex,并多出一章(第十章)介绍C++17标准库并行算法。本书适合C++多线程初学者,此为个人笔记,仅供参考,更详细内容见原书。
- GitHub Pages:https://downdemo.github.io/Cpp-Concurrency-in-Action-2ed/
- GitBook在线阅读:https://downdemo.gitbook.io/cpp-concurrency-in-action-2ed/
- 本书大多未详细解释的基础知识可参考《现代操作系统》:进程与线程、内存管理、文件系统、I/O、死锁
- 线程管理(Managing thread)
- 线程间共享数据(Sharing data between thread)
- 同步并发操作(Synchronizing concurrent operation)
- C++内存模型和基于原子类型的操作(The C++ memory model and operations on atomic type)
- 基于锁的并发数据结构的设计(Designing lock-based concurrent data structure)
- 无锁并发数据结构的设计(Designing lock-free concurrent data structure)
- 并发代码的设计(Designing concurrent code)
- 高级线程管理(Advanced thread management)
- 并行算法(Parallel algorithm)
- 多线程应用的测试与调试(Testing and debugging multithreaded application)
- 你好,C++中的并发世界!
- 线程管理
- 线程间共享数据
- 同步并发操作
- C++内存模型和基于原子类型的操作
- 基于锁的并发数据结构的设计
- 无锁并发数据结构的设计
- 并发代码的设计
- 高级线程管理
- 并行算法
- 多线程应用的测试与调试
头文件 | 说明 |
---|---|
<chrono> | 时钟 |
<condition_variable> | 条件变量 |
<atomic> | 原子类型和原子操作 |
<future> | 异步处理的结果 |
<mutex> | 锁 |
<ratio> | 编译期有理数算数 |
<thread> | 线程 |
<execution> | 标准库算法执行策略 |
特性 | API |
---|---|
thread | std::thread |
mutex | std::mutex、std::lock_guard、std::unique_lock |
condition variable | std::condition_variable、std::condition_variable_any |
atomic | std::atomic、std::atomic_thread_fence |
future | std::future、std::shared_future |
interruption | 无 |
特性 | API |
---|---|
thread | boost::thread |
mutex | boost::mutex、boost::lock_guard、boost::unique_lock |
condition variable | boost::condition_variable、boost::condition_variable_any |
atomic | 无 |
future | boost::future、boost::shared_future |
interruption | boost::thread::interrupt |
特性 | API |
---|---|
thread | pthread_create、pthread_detach、pthread_join |
mutex | pthread_mutex_lock、pthread_mutex_unlock |
condition variable | pthread_cond_wait、pthread_cond_signal |
atomic | 无 |
future | 无 |
interruption | pthread_cancel |
特性 | API |
---|---|
thread | java.lang.Thread |
mutex | synchronized blocks |
condition variable | java.lang.Object.wait、java.lang.Object.notify |
atomic | volatile变量、java.util.concurrent.atomic |
future | java.util.concurrent.Future |
interruption | java.lang.Thread.interrupt |
线程安全的容器 | java.util.concurrent中的容器 |
线程池 | java.util.concurrent.ThreadPoolExecutor |