Go言語で学ぶ並行プログラミング 他言語にも適用できる原則とベストプラクティス(インプレス) [電子書籍]
    • Go言語で学ぶ並行プログラミング 他言語にも適用できる原則とベストプラクティス(インプレス) [電子書籍]

    • ¥3,850770 ゴールドポイント(20%還元)
    • すぐ読めます
100000086602590223

Go言語で学ぶ並行プログラミング 他言語にも適用できる原則とベストプラクティス(インプレス) [電子書籍]

James Cutajar(著者)柴田 芳樹(著者)
価格:¥3,850(税込)
ゴールドポイント:770 ゴールドポイント(20%還元)(¥770相当)
フォーマット:
専用電子書籍リーダアプリ「Doly」が必要です。無料ダウンロード
出版社:インプレス
公開日: 2024年12月04日
すぐ読めます。
お取り扱い: のお取り扱い商品です。
ご確認事項:電子書籍リーダーアプリ「Doly」専用コンテンツ
こちらの商品は電子書籍版です

Go言語で学ぶ並行プログラミング 他言語にも適用できる原則とベストプラクティス(インプレス) の 商品概要

  • Go言語の並行処理機能なら、直感的で把握しやすい!
    複雑なテーマも多数の図と例でよりわかりやすく段階的に解説。

    並行処理の原理とベストプラクティスを習得できる。
    より高速なプログラムが書きたい開発者に最適の書。

    並行処理を導入することで、多数のアプリケーションの
    パフォーマンスと応答性を向上させることができます。


    【本書を読めば、次のことを理解・実践できるようになります】
    -----
    ◆反応性が高く高性能でスケーラブルなソフトウェアを作成できるようになる
    ◆並行処理の利点・制限・特性を理解できるようになる

    ◆メモリ共有とメッセージパッシングを区別できるようになる
    ◆ゴルーチン、ミューテックス、リーダー/ライターロック、ウェイトグループ、
    チャネル、条件変数を利用できるようになる

    ◆並行処理で注意すべき典型的なエラーを特定できるようになる
    ◆より高度なマルチスレッディングでプログラミングのスキルアップが図れる
    -----

    本書では、Goの構文と機能を説明することに焦点を当てているわけではなく、
    Go言語を使って並行処理の原則と技術を解説しています。
    これらの技術のほとんどは他の言語にも適用することができます。

    ※ 本書は『Learn Concurrent Programming with Go』(Manning Publications)の翻訳書です。

    ※ 本書では何らかのプログラミング言語の使用経験があることを前提としています(Go言語かC言語系の使用経験があれば本書の理想的な読者です)。

  • 目次

    表紙
    サンプルコード・正誤表について
    推薦の言葉
    著者紹介
    目次
    まえがき
    謝辞
    本書について
    第1部 並行プログラミングの基礎
    第1章 並行プログラミングへの第一歩
    1.1 並行処理について
    1.2 並行的な世界とのやり取り
    1.3 スループットの向上
    1.4 応答性の向上
    1.5 Goで並行プログラミング/1.5.1 ゴルーチンの概要/1.5.2 CSPと基本操作による並行性のモデリング
    1.5.3 独自の並行処理ツールの構築/1.6 性能のスケーリング
    1.6.1 アムダールの法則
    1.6.2 グスタフソンの法則
    第2章 スレッドを扱う/2.1 オペレーティングシステムにおけるマルチプロセッシング
    2.2 プロセスとスレッドによる並行処理の抽象化
    2.2.1 プロセスによる並行処理
    2.2.2 プロセスの生成
    2.2.3 一般的なタスクにマルチプロセッシングを使う
    2.2.4 スレッドでの並行処理
    2.2.5 マルチスレッドアプリケーションの実際
    2.2.6 複数のプロセスとスレッドを一緒に使う/2.3 ゴルーチンの何が特別なのか/2.3.1 ゴルーチンの生成
    2.3.2 ユーザー空間でのゴルーチンの実装
    2.3.3 ゴルーチンのスケジューリング
    2.4 並行性と並列性
    2.5 練習問題
    第3章 メモリ共有を使ったスレッド間通信/3.1 メモリ共有
    3.2 メモリ共有の実践/3.2.1 ゴルーチン間での変数の共有
    3.2.2 エスケープ分析
    3.2.3 複数のゴルーチンからの共有変数の更新
    3.3 競合状態
    3.3.1 StingyとSpendy:競合状態を作り出す
    3.3.2 実行のイールドは競合状態には役立たない
    3.3.3 適切な同期と通信による競合状態の排除
    3.3.4 Goの競合検出器
    3.4 練習問題
    第4章 ミューテックスを使った同期/4.1 ミューテックスによるクリティカルセクションの保護
    4.1.1 ミューテックスはどのように使うのか
    4.1.2 ミューテックスと逐次処理
    4.1.3 ノンブロッキング・ミューテックス・ロック
    4.2 リーダー・ライター・ミューテックスによる性能向上/4.2.1 Goのリーダー・ライター・ミューテックス
    4.2.2 独自の読み込み優先リーダー・ライター・ミューテックスの構築
    4.3 練習問題
    第5章 条件変数とセマフォ/5.1 条件変数/5.1.1 ミューテックスと条件変数の組み合わせ
    5.1.2 シグナルを失う
    5.1.3 ウェイトとブロードキャストによる複数ゴルーチンの同期
    5.1.4 条件変数を使ったリーダー・ライター・ロックの再検討
    5.2 カウンティングセマフォ
    5.2.1 セマフォとは何か
    5.2.2 セマフォの構築
    5.2.3 セマフォで通知を失わない
    5.3 練習問題
    第6章 ウェイトグループとバリアを使った同期/6.1 Go のウェイトグループ/6.1.1 ウェイトグループでタスクの完了を待つ
    6.1.2 セマフォを使ったウェイトグループの作成
    6.1.3 待機中にウェイトグループのサイズを変更
    6.1.4 柔軟なウェイトグループの構築
    6.2 バリア/6.2.1 バリアとは何か
    6.2.2 Go でバリアを実装する
    6.2.3 バリアを使った並列行列乗算
    6.3 練習問題
    第2部 メッセージパッシング
    第7章 メッセージパッシングを使った通信/7.1 メッセージの送受信
    7.1.1 チャネルでメッセージの送受信
    7.1.2 チャネルを使ったメッセージのバッファリング
    7.1.3 チャネルに方向を与える
    7.1.4 チャネルをクローズする
    7.1.5 チャネル経由で関数の結果を受け取る
    7.2 チャネルを実装する/7.2.1 セマフォでチャネルを作成する
    7.2.2 独自のチャネルにSend()メソッドを実装する
    7.2.3 独自のチャネルにReceive()メソッドを実装する
    7.3 練習問題
    第8章 チャネルをセレクト/8.1 複数のチャネルを組み合わせる/8.1.1 複数チャネルから読み込む
    8.1.2 ノンブロッキングチャネル操作にselectを使う
    8.1.3 defaultケースで並行計算を実行する
    8.1.4 チャネルでのタイムアウト
    8.1.5 selectでチャネルに書き込む
    8.1.6 nilチャネルでselectのケースを無効化する
    8.2 メッセージパッシングとメモリ共有のどちらかの選択/8.2.1 コードの簡素性を保つ
    8.2.2 密結合システムと疎結合システムの設計
    8.2.3 メモリ消費を最適化する
    8.2.4 効率的なコミュニケーション
    8.3 練習問題
    第9章 チャネルを使ったプログラミング/9.1 CSP(communicating sequential processes)
    9.1.1 不変性で干渉を避ける
    9.1.2 CSPで並行プログラミング
    9.2 チャネルで一般的なパターンを再利用
    9.2.1 quitチャネル
    9.2.2 チャネルとゴルーチンによるパイプライン化
    9.2.3 ファンインとファンアウト
    9.2.4 クローズ時に結果を出力する
    9.2.5 複数のゴルーチンへブロードキャストする
    9.2.6 条件成立後にチャネルをクローズする
    9.2.7 ファーストクラス・オブジェクトとしてチャネルを採用する
    9.3 練習問題
    第3部 並行処理のさらなるトピック
    第10章 並行処理パターン/10.1 プログラムを分解する
    10.1.1 タスク分解/10.1.2 データ分解
    10.1.3 粒度を考える
    10.2 並行処理の実装パターン/10.2.1 ループレベル並列処理
    10.2.2 フォーク/ジョイン・パターン
    10.2.3 ワーカープールを使う
    10.2.4 パイプライン処理
    10.2.5 パイプライン化の特性
    10.3 練習問題
    第11章 デッドロックを回避/11.1 デッドロックの特定
    11.1.1 資源割り当てグラフでデッドロックを可視化
    11.1.2 台帳におけるデッドロック
    11.2 デッドロックに対処する
    11.2.1 デッドロックを検出する
    11.2.2 デッドロックを回避する
    11.2.3 デッドロックを防ぐ
    11.3 チャネルでのデッドロック
    11.4 練習問題
    第12章 アトミック、スピンロック、フューテックス/12.1 アトミック変数を使ったロックフリーの同期
    12.1.1 アトミックな数値で変数を共有
    12.1.2 アトミックを使った場合の性能ペナルティ
    12.1.3 アトミックの数値を使ってカウントする
    12.2 スピンロックでミューテックスを実装する
    12.2.1 比較とスワップ
    12.2.2 ミューテックスを構築
    12.3 スピンロックの改良
    12.3.1 フューテックスによるロック
    12.3.2 システムコールの削減
    12.3.3 Goのミューテックス実装
    12.4 練習問題
    訳者あとがき
    索引
    訳者紹介・レビュアー
    奥付

Go言語で学ぶ並行プログラミング 他言語にも適用できる原則とベストプラクティス(インプレス) の商品スペック

発行年月日 2024/12/04
Cコード 3055
出版社名 インプレス
本文検索
他のインプレスの電子書籍を探す
紙の本のISBN-13 9784295020660
ファイルサイズ 303.7MB
著者名 James Cutajar
柴田 芳樹
著述名 著者

    インプレス Go言語で学ぶ並行プログラミング 他言語にも適用できる原則とベストプラクティス(インプレス) [電子書籍] に関するレビューとQ&A

    商品に関するご意見やご感想、購入者への質問をお待ちしています!