Paul E. McKenneyは、RCU(Read-Copy-Update)同期メカニズムを考案したLinuxカーネル開発者であり、無料のオンライン教科書「Is Parallel Programming Hard, And, If So, What Can You Do About It?」を運営している。現在のバージョンはv2026.06.21aで、Creative Commons Attribution-Share Alike 3.0 United Statesライセンス下で二段組、一段組、ebookのPDF形式で提供されており、パッチや更新用にkernel.orgにgitツリーがある。

ahelwer.caの評価者は、10年間TLA⁺と分散システムに就念してきたが、この教科書をカナダでの家族旅行中に読み、率直な評価を記した。評価者は、2026年のSoftware Should Work会議で、並列ロックフリーなガベージコレクタの実装の難しさについての話が契機となり、形式的手法の仕事から並列プログラミングへの移行を望んでこの本に臨んだ。

評価者は序章のペース感を良いと感じた。第3章「Hardware and its Habits」では、コアがキャッシュミスアdressに書き込むという簡略化された説明を含め、CPUキャッシュの挙動が説明されている。しかし、評価者は1つの欠点を指摘した。MESIキャッシュ整合性プロトコルは付録にしか登場しないが、これを理解することで、評価者にとって後続の章全体の見方が変わった——x86では、排他的所有権がコア間で移動するため、二つのコアが実際に同じキャッシュラインに同時に書き込むことはできないという認識も含まれる。

第4章「Tools of the Trade」では、評価者が「二重の災難」と呼ぶもの——並列コードを壊すコンパイラ最適化(ロードtearing、ストアtearing、発明されたロードとストア、デッドコード排除)と、その上に重なるCPU実行の命令再ordering——がカバーされている。評価者は、この章がLinuxカーネル中心であると指摘し、C++11/C11メモリモデルの作業(std::memory_order、ACCESS_ONCE、WRITE_ONCEマクロ)に十分な配慮が足りないとしており、評価者はこれらを他の場所で探さなければならなかったと述懐した。

第5章「Counting」は評価者のハイライトである。複数のスレッドが共有カウンタを増やす約10のアプローチを比較し、性能上の理由から自明なアトミック増分バージョンを早期に排除する。この章では、偽共有を避ける手段として、スレッド統計カウンタ(conflict-free replicated datatypesに関連する)を導入し、評価者が完全には理解できなかったと認める「signal-theft limit counter」で締めくくる。

総合的に評価者はこの教科書を優れたものと呼ぶ——簡単だからではなく、release-consume ordering、out-of-thin-air values、DEC Alphaの弱いメモリモデル、ロックフリーアルゴリズムの決定性のあるシミュレーションテスト、pre-v8 ARM上的 preemptible atomicsなど、さらに学びたいという「渇望」を生み出したからだ。評価者は次に高性能ガベージコレクションの学習を計画している。