本書は
Kirill Bobrov, "Grokking Concurrency", Manning Publishing, 2023
の邦訳です。
現代的なアプリにふさわしい高パフォーマンスのコードを書くためには、並行処理の理解が不可欠です。Webアプリ、IoTシステム、ビッグデータ処理など、並行処理はあらゆる局面で活用されていますが、そこには初学者が中心的に学ぶ「逐次実行を前提にしたプログラム」ではどうしても理解できない複雑な概念や特徴があります。それらをきちんと押さえることで、暴走せずにパフォーマンスを高める並行処理を手に入れることができるのです。
本書ではその核となる概念が徹底的に説明されており、楽しくわかりやすい文章と興味深いイラストで、洞察力に富んだ例や、独自のプロジェクトに適用できる詳細なテクニックが解説されています。本書を読めば、並行処理、非同期性の中心となる概念やさまざまなハードウェアアーキテクチャの長所と短所が理解でき、スケーラブルな並行処理システムの作成と実装を目指すことができるはずです。
◆◆◆目次◆◆◆
Part 1 タコのオーケストラ:並行処理の交響曲
Chapter 1 並行処理
Chapter 2 直列実行と並列実行
Chapter 3 コンピュータの仕組み
Chapter 4 並行処理の構成要素
Chapter 5 プロセス間通信
Part 2 並行処理の3本の触手:マルチタスク、分解、同期
Chapter 6 マルチタスク
Chapter 7 分解
Chapter 8 並行処理問題の解決:競合状態と同期
Chapter 9 並行処理問題の解決:デッドロックと飢餓状態
Part 3 非同期のタコ:並行処理でピザを作ろう
Chapter 10 ノンブロッキングI/O
Chapter 11 イベントベースの並行処理
Chapter 12 非同期通信
Chapter 13 並行処理アプリケーションを作成する
Part 1 タコのオーケストラ:並行処理の交響曲
Chapter 1 並行処理
1.1 並行処理はなぜ重要か
1.2 並行処理の階層
1.3 本書から何を学べるか
1.4 本章のまとめ
Chapter 2 直列実行と並列実行
2.1 復習:プログラムとは何か
2.2 直列実行
2.3 逐次実行
2.4 並列実行
2.5 並列コンピューティングの要件
2.6 並列コンピューティング
2.7 アムダールの法則
2.8 グスタフソンの法則
2.9 並列性と並行性
2.10 本章のまとめ
Chapter 3 コンピュータの仕組み
3.1 プロセッサ
3.2 ランタイムシステム
3.3 コンピュータシステムの設計
3.4 さまざまなレベルの並列ハードウェア
3.5 本章のまとめ
Chapter 4 並行処理の構成要素
4.1 並行処理プログラミングのステップ
4.2 プロセス
4.3 スレッド
4.4 本章のまとめ
Chapter 5 プロセス間通信
5.1 通信の種類
5.2 Thread Poolパターン
5.3 パスワードの解読
5.4 本章のまとめ
Part 2 並行処理の3本の触手:マルチタスク、分解、同期
Chapter 6 マルチタスク
6.1 CPUバウンドとI/Oバウンドのアプリケーション
6.2 マルチタスクが必要
6.3 速習:マルチタスク
6.4 マルチタスク環境
6.5 本章のまとめ
Chapter 7 分解
7.1 依存関係の分析
7.2 タスク分解
7.3 タスク分解:Pipeline パターン
7.4 データ分解
7.5 粒度
7.6 本章のまとめ
Chapter 8 並行処理問題の解決:競合状態と同期
8.1 共有リソース
8.2 競合状態
8.3 同期
8.4 本章のまとめ
Chapter 9 並行処理問題の解決:デッドロックと飢餓状態
9.1 食事をする哲学者
9.2 デッドロック
9.3 ライブロック
9.4 飢餓状態
9.5 同期を設計する
9.6 最後に
9.7 本章のまとめ
Part 3 非同期のタコ:並行処理でピザを作ろう
Chapter 10 ノンブロッキングI/O
10.1 分散化された世界
10.2 クライアント/サーバーモデル
10.3 ピザ注文サービス
10.4 ブロッキングI/O
10.5 ノンブロッキングI/O
10.6 本章のまとめ
Chapter 11 イベントベースの並行処理
11.1 イベント
11.2 コールバック
11.3 イベントループ
11.4 I/Oの多様化
11.5 イベント駆動型のピザサーバー
11.6 Reactorパターン
11.7 メッセージパッシングでの同期
11.8 I/Oモデル
11.9 本章のまとめ
Chapter 12 非同期通信
12.1 非同期が必要
12.2 非同期プロシージャ呼び出し
12.3 協調的マルチタスク
12.4 Futureオブジェクト
12.5 協調的ピザサーバー
12.6 非同期ピザレストラン
12.7 非同期モデルに関するまとめ
12.8 本章のまとめ
Chapter 13 並行処理アプリケーションを作成する
13.1 結局のところ、並行処理とは何か
13.2 Foster の方法論
13.3 行列の乗算
13.4 分散ワードカウント
13.5 本章のまとめ