C++ 并发编程:多线程、异步与并行
C++ 并发编程:多线程、异步与并行
简介:
现代处理器拥有多个核心,要充分发挥其全部性能,必须掌握编写并发代码的能力。《C++ 并发编程》是一本全面的指南,将帮助您掌握 C++ 语言中并行编程的各个方面:从基础线程到复杂的同步模式。
本书从基础开始:您将学习如何使用标准库(std::thread)创建和管理线程,如何使用互斥锁(std::mutex)保护共享数据以及如何避免死锁。本书特别关注 C++11/14/17/20 的现代特性,例如 std::async、std::future、std::promise 和 std::packaged_task,这些特性允许您编写异步代码而无需手动管理线程。
您还将了解 C++ 内存模型(memory model)、原子操作(std::atomic)和内存屏障——这些主题对于创建正确且高效的并发算法至关重要。书中专门有一章介绍多线程应用程序的设计模式:线程池、生产者-消费者、读写锁等。
本书的实践部分包括对真实案例的分析:并行数据处理、并发队列、无锁数据结构以及性能优化。您将学会识别和修复常见错误:数据竞争(data races)、死锁(deadlock)、伪共享(false sharing)以及缓存问题。
本书适合谁阅读:
- 希望编写快速多线程应用程序的 C++ 开发者
- 从单线程项目转向并发项目的程序员
- 准备面试中涉及多线程问题的专业人士
- 所有希望了解系统层面并行工作原理的人
您将学到什么:
- 如何在 C++ 中创建和同步线程
- 如何使用 std::async、std::future 和 std::promise 处理异步任务
- C++ 内存模型和原子操作的工作原理
- 如何设计线程安全的类和容器
- 如何避免死锁、数据竞争和其他问题
- 如何分析和优化并发代码
- 如何应用无锁和无等待算法
本书包含大量可直接应用于您项目的代码示例。所有示例均在 GCC、Clang 和 MSVC 下测试通过。阅读本书后,您将能够自信地编写高效利用多核处理器且无错误的并发程序。
这并非枯燥的理论,而是一本基于作者多年经验的实用指南。您将深入理解 C++ 并发的工作原理,并学会将所学知识应用于实践。