Paul E. McKenney 的前言

这本书很好地概述了 Rust 语言的低级并发,包括线程、锁、引用计数、原子、mailboxes/通道等等。它深入探讨了 CPU 和操作系统的问题,后者总结了使并发代码在 Linux、macOS 和 Windows 上正常工作所固有的挑战。我特别高兴地看到 Mara 用有效的 Rust 代码来说明这些主题。它通过讨论信号量、无锁链表、队列锁、顺序锁甚至 RCU 来结束。

那么,对于像我这样使用 C 代码近 40 年,最近又深入研究 Linux 内核的人,这本书能提供什么帮助呢?

我最初是从众多爱好者和 Linux 相关会议上了解到 Rust 的。尽管如此,在一篇与 Rust 相关的 LWN 文章“Using Rust for Kernel Development”在新窗口打开中被点名之前,我一直很高兴地关注自己的事情。因此,我写了一个博客系列,题为“So You to Rust the Linux Kernel?”在新窗口打开这个博客系列引发了许多热烈的讨论,其中一些可以在该系列的评论中看到。

在一次这样的讨论中,一位也编写了大量 Rust 代码的长期 Linux 内核开发人员告诉我,在用 Rust 编写并发代码时,你应该按照 Rust 想要的方式编写。从那以后我了解到,虽然这是一个很好的建议,但它留下了一个悬而未决的问题,即 Rust 到底想要什么。这本书对这个问题给出了很好的答案,因此对于希望学习并发性的 Rust 开发人员和希望学习如何在 Rust 中最好地做到这一点的其他语言的并发代码开发人员都很有价值。

我当然属于后一类。然而,我必须承认,许多关于 Rust 并发的热烈讨论让我想起了很久以前我的父母和祖父母对电动工具(如锯子和钻头)添加的不便安全功能的抱怨。其中一些安全功能现在无处不在,但锤子、凿子和电锯并没有发生太大变化。确定哪些机械安全功能经得起时间的考验一点都不容易,所以我建议以极其谦虚的态度来研究软件安全功能。请理解,我是在针对这些功能的支持者和反对者。

这将我们带到另一组潜在读者,Rust 怀疑论者。虽然我确实相信大多数 Rust 怀疑论者通过指出改进的机会为社区提供了有价值的服务,但除了最精通 Rust 的怀疑论者之外,所有人都会从阅读本书中受益。如果没有别的,这样做将使他们能够提供更尖锐和更有针对性的批评。

然后是那些铁杆非 Rust 开发人员,他们更愿意用自己喜欢的语言实现 Rust 的并发相关安全机制。这本书将使他们更深入地了解他们想要复制或改进的 Rust 机制。

最后,许多 Linux 内核开发人员都注意到 Rust 在被包含在 Linux 内核中所取得的进展;例如,请参阅 Jonathan Corbet 的文章“内核中 Rust 的后续步骤”在新窗口打开。截至 2022 年 10 月,这仍是一项实验,但越来越受到重视。事实上,Linus Torvalds 已经接受了 Linux 内核 6.1 版中第一批 Rust 语言支持。

无论您阅读本书是为了扩展您的 Rust 技能以包括并发性、扩展您的并发技能以包括 Rust、改善您现有的非 Rust 环境,还是只是为了从不同的角度看待并发,我都希望您一切顺利在你的旅途中!

——Paul E. McKenney
Meta Platforms Kernel Team
2022 年 10 月

上次更新: