シンプルな言語仕様と手厚い並行処理機能で、多くのプログラマの心を捉えるGo言語。そのGoの並行処理の設計哲学、言語の機能、また実際のプログラミングテクニックや並行処理の使い方、システムに導入する際のベストプラクティスとパターン、その内部構造までをまとめた1冊です。
https://www.ohmsha.co.jp/book/9784873118468/
正誤表やDLデータ等がある場合はこちらに掲載しています
訳者まえがき
序文
1章 並行処理入門
1.1 ムーアの法則、Webスケール、そして私たちのいる混沌
1.2 なぜ並行処理が難しいのか
1.2.1 競合状態
1.2.2 アトミック性
1.2.3 メモリアクセス同期
1.2.4 デッドロック、ライブロック、リソース枯渇
1.2.5 並行処理の安全性を見極める
1.3 複雑さを前にした簡潔さ
2章 並行性をどうモデル化するか:CSPとは何か
2.1 並行性と並列性の違い
2.2 CSPとは何か
2.3 これがどう役に立つのか
2.4 Goの並行処理における哲学
3章 Goにおける並行処理の構成要素
3.1 ゴルーチン(goroutine)
3.2 syncパッケージ
3.2.1 WaitGroup
3.2.2 MutexとRWMutex
3.2.3 Cond
3.2.4 Once
3.2.5 Pool
3.3 チャネル(channel)
3.4 select文
3.5 GOMAXPROCSレバー
3.6 まとめ
4章 Goでの並行処理パターン
4.1 拘束
4.2 for-selectループ
4.3 ゴルーチンリークを避ける
4.4 orチャネル
4.5 エラーハンドリング
4.6 パイプライン
4.6.1 パイプライン構築のためのベストプラクティス
4.6.2 便利なジェネレーターをいくつか
4.7 ファンアウト、ファンイン
4.8 or-doneチャネル
4.9 teeチャネル
4.10 bridgeチャネル
4.11 キュー
4.12 contextパッケージ
4.13 まとめ
5章 大規模開発での並行処理
5.1 エラー伝播
5.2 タイムアウトとキャンセル処理
5.3 ハートビート
5.4 複製されたリクエスト
5.5 流量制限
5.6 不健全なゴルーチンを直す
5.7 まとめ
6章 ゴルーチンとGoランタイム
6.1 ワークスティーリング
6.1.1 タスクと継続、どちらを盗むのか
6.2 すべての開発者にこの言葉を贈ります
6.3 結論
補遺A
A.1 ゴルーチンのエラーの解剖
A.2 競合状態の検出
A.3 pprof
A.4 trace
補遺B go generate
B.1 空インターフェースの使用について
B.2 go generateとは何か
B.3 go generate の機能
B.4 例: genny を利用する
B.5 ジェネリクスについて
著者紹介