C++ Concurrency in Action(C++并行编程实战)
C++ Concurrency in Action(C++并行编程实战)
简介:
引言
安东尼·威廉姆斯所著的《C++ Concurrency in Action》(第二版,2019年)堪称C++多线程与并行编程领域最权威、最深入的教材。作者身为C++标准委员会成员及just::thread库的开发者,不仅讲解语法,更教导读者以并发思维进行思考,避免数据竞争,构建高效、安全且可扩展的系统。本书涵盖了从基础机制(std::thread、互斥锁、条件变量)到高级主题(原子操作、无锁数据结构、C++内存模型)的全部内容。
本书内容
2019年版已完全针对C++14和C++17标准进行了重写。全书共13章,分为两部分:基础篇和高级技术篇。第一部分介绍线程管理、共享数据保护、同步及异步任务。第二部分深入探讨原子类型、C++内存模型、无锁容器设计、并行算法及多线程代码测试。每章都包含大量实践示例,从简单的线程池到无锁队列的实现。
适合读者
本书面向有经验的C++开发者,他们已能熟练使用C++11/14/17,并希望掌握多线程编程。C++新手可能会感到困难——本书默认读者已掌握模板、智能指针、lambda表达式和STL。但如果你在其他语言(Java、C#)中已有基本的线程使用经验,并希望理解C++的特性,本书将是绝佳的桥梁。
读者将学到什么
- 线程管理:创建、连接、分离、参数传递、线程标识。
- 共享数据保护:std::mutex、std::lock_guard、std::unique_lock、递归互斥锁和共享互斥锁、死锁及其预防。
- 同步:条件变量(std::condition_variable)、std::future、std::promise、std::packaged_task、std::async。
- 原子操作:std::atomic、内存序模型(relaxed、acquire、release、seq_cst)、内存屏障。
- C++内存模型:happens-before的形式化描述、同步、数据竞争。
- 无锁编程:无锁栈、队列、哈希表的设计。
- 并行算法:带执行策略(std::execution::par)的std::for_each、std::find、std::reduce。
- 测试与调试:数据竞争检测、多线程代码测试、工具(ThreadSanitizer)。
优势
本书最大的优点是深度与准确性。安东尼·威廉姆斯不仅展示如何使用API,更解释代码为何如此工作、标准提供了哪些保证以及如何规避陷阱。尤其宝贵的是对C++内存模型的详细描述——这一主题对大多数开发者而言通常是“黑箱”。代码示例真实、注释详尽,并常配有图表。第二版新增了关于STL并行算法的章节,并更新了针对C++17的示例。
推荐人群
本书是所有编写高负载服务器、游戏引擎、金融系统、数据库或其他对并行执行性能和正确性有要求的软件的开发者的必读之作。它同样适用于希望创建线程安全组件的库和框架开发者。如果你正在准备面试,目标公司大量使用C++(例如高频交易、游戏开发或系统编程领域),本书将为你提供扎实的基础知识,让你在众多候选人中脱颖而出。