Magnolia Tech

いつもコードのことばかり考えている人のために。

『なっとく!並行処理プログラミング』で並行処理の基礎を学ぶ

買ったまま、ずいぶん長いこと積んだままになっていた『なっとく!並行処理プログラミング』をようやく読みました

以前、ユニットテストを並行実行するツールを作るために'select'の挙動とかを調べてたことが有りますが、とにかく「データの競合はどこで起きるか?」「分解と集約のオーバーヘッドはどのくらい発生するか?」ということを考え始めると、「普通にテストを実行するか...」となってしまった思い出が有ります

結局オーバーヘッドが大きくて、速くならなかった...

並行処理により効率化を図ることはぱっと思い付くと思いますが、そのためにどんなことを考えていかないといけないか?

この本は、そのことに答えてくれます

  • 並行処理と、並列処理の違いを言えるか?
  • 複数のプロセスが通信する手段を適切に選択できるか?
  • 複数の計算をどのように処理するのか、その選択方法を説明できるか?
  • 巨大な計算の分解と、集約、その特性を説明できるか?

「なっとく!」シリーズらしい分かりやすい解説で、読み終わる頃にはこんなことに答えられるようになります

サンプルコードはPythonで書かれていますが、割と平易なコードが多いので、そのまま写経するより、他の言語で書き直しながら書いた方が理解度が上がっていいかと思いました(自分は、ほぼ一対一で書き換えられるので、Rubyで書いてました)

並行処理には、さまざまなトレードオフが出てくるので、そのトレードオフの要素は何か?それが学べる1冊でした

並行処理の入門に、お勧めです