C#によるマルチコアのための非同期 / 並列処理プログラミング
シーシャープ ニ ヨル マルチコア ノ タメノ ヒドウキ ヘイレツ ショリ プログ
最新開発テクニックの基礎 & 実践知識
- 著者:
- 山本康彦(ヤマモト, ヤスヒコ)
- 出版社:
- 技術評論社
- 出版日:
- 2013年08月
- ISBN:
- 9784774158280
- 在庫:
- 在庫あり
なぜ注目されているか
技書の森解説
『C#によるマルチコアのための非同期 / 並列処理プログラミング』 (山本康彦 著、技術評論社、2013 年 7 月刊) は、マルチコアの CPU の性能を引き出すための非同期処理と並列処理を、C# と .NET Framework の機能で解説する本です。版元は対象を「すでに実際の開発は経験しているが並列処理や非同期処理の経験はない C# プログラマー」と案内しています。版元の書籍ページの著者紹介 (2026 年 10 月時点) によれば、山本康彦は本田技術研究所で自動車の設計と研究に携わったあとソフトウェア開発業界に転じ、主に Windows 系の業務システムを手掛けてきた技術者で、.NET Framework と C# とは β 版だった 2001 年からの付き合いと紹介されています。
非同期と並列の違い、スレッドとタスクの考え方
非同期処理と並列処理は混同されやすい言葉です。非同期処理 は、時間のかかる処理の完了を待たずに呼び出し元を先へ進める書き方で、デスクトップアプリでは画面を描く UI スレッドを止めないために使われます。並列処理は、1 つの計算を分けて複数のコアで同時に実行し、全体の処理時間を縮める考え方です。論理的に同時に進めることと物理的に同時に実行することは、並行処理と並列処理の区別 として分けて扱われます。複数のスレッドが同じデータを書き換えると、実行の順序によって結果が変わる レースコンディション が起き、排他の仕組みが必要になります。スレッドの生成には手間がかかるため、作ったスレッドを使い回す スレッドプール と、処理の単位を表して完了後の続きや例外、キャンセルをまとめて扱うタスクが .NET の非同期の土台になっています。async と await は、このタスクの続きを、上から順に読める同期処理に近い形で書くための構文です。
全 4 部の構成、原理からラングトンのループの並列化まで
目次は Part 1 から Part 4 に分かれます。Part 1「マルチコアのための非同期/並列処理の原理」は、UI と UX の課題を解く非同期処理と並列処理、.NET Framework の支援、用語集から入り、コアの能力を使い切る「大喰らい」プログラムで非同期処理と並列処理を試し、テストとデバッグの方法までを扱います。Part 2「マルチコアを使いこなすための非同期/並列処理必須知識」は Chapter 1 から Chapter 12 で、プロセスと AppDomain とスレッドとタスクの関係、スレッドの開始と完了待ち、戻り値の取り出し、続けて別の処理を実行する方法、async/await、スレッド間の同調、Interlocked クラスや lock キーワード、Monitor、ReaderWriterLock、Mutex、Semaphore による共用、スレッドローカルストレージ、例外、進捗報告、キャンセル、Parallel クラスと PLINQ を順に取り上げます。Part 3「マルチコアのための C#/.NET の非同期/並列処理の方法」は、1 つの例題を .NET 1.x、2.0、3.5、4、Silverlight、4.5 の方式で書き分けます。Part 4「マルチコア非同期/並列処理実践プログラミング」は、セルオートマトン「ラングトンのループ」を実装し、ロジックと画面の非同期化、Parallel.For による並列化、ロジックの改良を経て、Chapter 6「まとめ」で閉じます。
.NET の版ごとの書き方と、2013 年刊の範囲
本書は、同じ処理を .NET の版ごとに書き分けています。Part 2 の多くの章は、Thread と ThreadPool、delegate、BackgroundWorker、Component クラスを継承した EAP、タスクという順に方式を並べ、各項に .NET 2.0 や .NET 4 といった版の印を付けています。Part 3 では APM、EAP、TAP、Reactive Extensions、WinMD の非同期処理を扱います。目次の上で扱う範囲は .NET 4.5 までで、それより後の版の項目はありません。版元の書籍ページ (2026 年 10 月時点) には、紙の本に加えて電子版の案内と、正誤表やダウンロードのためのサポートページが用意されています。
本書は、マルチコアを使う理由と原理から、スレッドとタスクの扱い、.NET の版ごとの非同期の方式、ラングトンのループの並列化までを全 4 部に収めています。
言及した記事 (2 件)
関連記事
技術書の読書会で起きる面白い現象 - 同じ本を読んでも解釈が違う理由
技術書の読書会では、同じ本を読んでいるのに参加者の解釈がまったく違うことがあります。脱線が本題より面白くなる現象など、読書会の不思議を紹介します。
技術書コミュニティの見つけ方 - 読書仲間を作る
技術書の読書仲間を見つけるためのコミュニティの種類と、参加のメリット、自分でコミュニティを立ち上げる方法を紹介します。
なぜ同じ本を読んだのに、あの人と理解が違うのか
読書会で同じ本を読んだはずなのに、メンバーごとに理解が異なる。この現象は欠陥ではなく、読書の本質的な特性です。理解の差が生まれる仕組みと、その差を学びに変える方法を解説します。
関連用語
ElastiCache
AWS のマネージドインメモリキャッシュサービスで、Valkey / Redis OSS / Memcached をサポートする
AppSync
AWS のマネージド GraphQL / Pub/Sub サービス
変更データキャプチャ (CDC) とは - DB の変更をリアルタイム連携するパターン
変更データキャプチャ (CDC、Change Data Capture) はデータベースの INSERT/UPDATE/DELETE を検出して検索エンジンや分析基盤へリアルタイムに伝播させるデータ統合パターン。実装 4 方式と AWS での構成を解説
PWA
Service Worker やマニフェストを活用し、Web 技術でオフライン対応やプッシュ通知などネイティブアプリに近い体験を提供するアプローチ
TTL
データやキャッシュの有効期限を設定し、自動的に削除 / 更新する仕組み
キャッシュ無効化とは - TTL / イベント駆動 / パージ戦略の比較
キャッシュ無効化は古くなったキャッシュデータを最新に更新する仕組み。TTL 方式 / Write-through / イベント駆動パージの使い分けと実装パターンを解説