Rust并行编程:实践指南
Rust并行编程:实践指南
简介:
引言
《Hands-On Concurrency with Rust》一书(作者:Brian Troutwine,2018年出版,共448页)不仅仅是一本关于Rust语言的普通教程,更是对现代系统编程中最复杂、最重要的主题之一——并发的深入探索。Rust以其在编译阶段防止数据竞争的能力而闻名,但要充分发挥这一优势,不仅需要理解语法,还需要理解线程、内存和同步的内部机制。本书正是为了解决这一任务而写。
Brian Troutwine是一位经验丰富的开发者和可靠性工程师,曾从事高负载系统的工作。他的方法以实用性著称:每一章不仅包含理论,还包含可以直接运行和修改的现成代码示例。本书面向已经熟悉Rust基础的读者,旨在帮助他们从编写简单的单线程程序过渡到创建复杂的多线程系统。
这本书是关于什么的?
本书涵盖了与Rust并发相关的全部主题。它从基本概念(线程、互斥锁、通道)开始,逐步过渡到高级技术:无锁数据结构、原子操作、内存管理(Arc、Cell、RefCell)以及异步编程。特别关注安全性——如何避免死锁、活锁和其他陷阱。
本书结构逻辑清晰:首先学习管理线程和同步数据访问,然后掌握用于消息传递的通道,之后深入无锁算法和原子操作的世界。单独一部分内容专门介绍与外部库(例如crossbeam)的集成以及编写用于测量性能的基准测试。
这本书适合谁?
本书面向已经熟悉Rust的开发者(至少达到能阅读和编写简单程序的程度),他们希望深入系统编程并学习编写高效的多线程代码。本书将对以下人群有用:
- 从事高负载服务器和网络应用程序的工程师。
- 对性能至关重要的游戏引擎和模拟器开发者。
- 嵌入式系统和实时应用程序的专家。
- 所有希望了解Rust如何在类型层面保证并发代码安全的人。
读者将学到什么?
学习本书后,您将能够:
- 创建和管理线程,使用std::thread、线程池和scoped threads。
- 使用同步原语:Mutex、RwLock、Condvar、Barrier。
- 通过通道交换数据(mpsc、crossbeam_channel),并理解同步与异步传输之间的区别。
- 使用原子操作(AtomicBool、AtomicUsize等)并构建无锁数据结构。
- 应用智能指针在线程间共享数据:Arc、Rc、Cell、RefCell。
- 编写异步代码,使用async/await(尽管本书出版于该特性稳定之前,但它为理解奠定了基础)。
- 测量性能并对并发代码进行性能分析。
- 避免常见错误:死锁、活锁、伪共享(false sharing)。
本书的优势
首先引人注目的是实践导向。每一章都包含大量可以复制和运行的代码示例。作者不仅展示正确的解决方案,也展示错误的解决方案,并解释它们为何不起作用。这有助于形成正确的思维方式。
其次是解释的深度。Troutwine不仅仅列举API,而是讲解互斥锁在底层是如何工作的,处理器如何处理原子操作。