并行编程有多难?一本神书的深度书评

Book review: Is parallel programming hard, and, if so, what can you do about it?

并行编程有多难?一本神书的深度书评

在经历了 TLA⁺ 和分布式系统的十年后,我决定在 2026 年加拿大满是蚊子的假期里,挑战 Paul E. McKenney 的并行编程经典教材。这本书不仅幽默地揭示了现代 CPU 缓存机制和编译器优化的“恶作剧”,还深入探讨了无锁编程的复杂性。虽然书中对 MESI 协议的讲解略显滞后,且部分章节过于侧重 Linux 内核语境,但它成功点燃了我对底层并发机制的探索欲。从原子操作的陷阱到虚假共享的性能影响,这本书让我意识到,在并行世界里,直觉往往是不可靠的。

如果你没有足够的谨慎就编写并行程序,编译器会尝试难以置信的创造性优化,导致完全荒谬的行为!
  1. cbm-vic-20

    标题本该是:"并行编程有多难?如果确实很难,该怎么办?"

  2. criddell

    这篇书评似乎把并行(parallelism)和并发(concurrency)混为一谈,但它们并不是一回事。

    据我所知,并行关乎任务执行,而并发关乎任务结构。或者像 Rob Pike 所说:

    "并发是关于同时处理很多事情,而并行是关于同时做很多事情。"

    他在《并发不是并行》的演讲中说过这句话。

  3. bolangi

    Raku 语言(前身为 Perl 6)及其底层虚拟机具备支持并行编程、并发和异步的功能,旨在让常见场景相对容易编码,并避免陷阱。

    虚拟机及这些功能的作者 Jonathan Worthington 曾就这些概念及其实现做过一场精彩的演讲。

    https://www.youtube.com/watch?v=JpqnNCx7wVY

同日更多故事

2026-09-24