Linuxカーネルの伝説的開発者が書いた並行プログラミング教科書、読んでみた
Book review: Is parallel programming hard, and, if so, what can you do about it?

LinuxカーネルのRCU同期機構の作者Paul E. McKenneyによる無料オンライン教科書の書評。CPUキャッシュのMESIプロトコルやコンパイラの恐ろしい最適化など、並行プログラミングの難しさをユーモアを交えて解説。特に第5章のカウンタ実装の話が秀逸で、並行プログラミングへの好奇心が掻き立てられる。
複数のCPUコアが同じデータ位置に文字通り同時に書き込むことはできない!
HNでの議論
62- cbm-vic-20
「並行プログラミングは難しいものなのか、そしてもしそうならどう対処すべきか?」というタイトルにすべきだったな。
- criddell
このレビューは並列性と並行性を同じものとして扱っているように見えるが、両者は違う。
私の理解では、並列性はタスクの実行に関するもので、並行性はタスクの構造に関するものだ。あるいはRob Pikeが言ったように:
「並行性とは一度にたくさんのことを扱うこと。並列性とは一度にたくさんのことを行うこと。」
彼は「Concurrency is not Parallelism」の講演でそう述べている。
- hoistway
特定の負荷の下でしか現れないデッドロックを追跡するのに何日も費やした。優れたツールがあっても、間違いなく難しい。
- bolangi
Raku言語(旧Perl 6)とその基盤VMには、並列プログラミング、並行性、非同期性をサポートする機能があり、よくあるケースを比較的簡単にコーディングでき、落とし穴を避けられるように設計されている。
VMとこれらの機能の作者であるJonathan Worthingtonが、概念とその実装について素晴らしいプレゼンテーションを行っている。
- anonymousDan
並行プログラミングの入門書としては、おそらく『The Art of Multiprocessor Programming』(HerlihyとShavitz)をお勧めする。メモリの一貫性とコヒーレンスの相互作用にもっと踏み込みたければ、『A Primer on Memory Consistency and Cache Coherence』(Nagarajanら)もある。