C# 非同期・並列プログラミング入門
Task、async/await、Invoke の要諦を学ぶ
著者 | 北山 洋幸 |
---|---|
判型 | B5変型、240頁 |
ISBN | 978-4-87783-528-6 |
価格 | 本体 3,000円 |
発行日 | 2022年10月10日(初版第1刷) |
本書について
本書はC#の並列処理や非同期処理について記述した書籍です。一般的に並列処理は性能向上を目的にすることが多いのですが、本書はユーザーインターフェース(UI)の改善についても多くのページ数を割きました。
Visual Studio 2010と同時に現れたC# 4.0および.NET Framework 4で、タスク並列ライブラリ(TPL: Task Parallel Library)が追加されました。これによって、並列プログラムを容易に、かつ柔軟に記述できるようになりました。これは、.NET Frameworkが従来から持つ生産性の高さに加えて、性能とスケーラビリティの向上も同時に達成する大きな力となります。さらには、Taskクラスと紐付いたasync/awaitがC# 5.0で導入され、UIをTaskと簡単に統合して記述できるようになりました。そして、C# 7.1では、Mainメソッドにasyncなども指定できるようになり、非同期プログラムの開発に関する拡張が行われてきました。ほかにも、.NET 4.5でDispatcherクラスにInvokeAsyncメソッドが追加されるなど、TPL導入時から多くの拡張が行われています。
本書では、常に話題となるasync/awaitやそれに絡むデッドロックや例外の捕捉などについてまとめた書籍です。本書がC#の非同期プログラミングや並列プログラミングの理解の一助となることを祈念いたします。
目次
- 第1章 並列と非同期概論
- 1.1 並列化概論
- 1.2 逐次と並列
- 1.3 プロセス・スレッドによる並列
- 1.4 並列化する目的
- 1.5 並列化の課題
- 1.6 タスク並列ライブラリ(TPL)概論
- 1.7 C#の並列と同期
- 第2章 並列処理
- 2.1 スレッドの基本
- 2.2 引数
- 2.3 戻り値
- 2.4 タスク配列
- 2.5 タスク継続
- 2.6 入れ子タスクと子タスク
- 第3章 Taskと非同期
- 3.1 同期処理と非同期処理
- 3.2 Taskと非同期
- 3.3 フリーズする例
- 3.4 例外発生
- 3.5 結果誤り
- 3.6 ラムダ式でなくメソッドで記述
- 3.7 戻り値
- 3.8 非同期とTaskのWaitメソッド
- 3.9 非同期プログラミングガイドライン
- 第4章 TaskとUI更新
- 4.1 Taskとasync/await
- 4.2 TaskクラスとInvoke
- 4.3 ThreadクラスとInvokeメソッド
- 4.4 TaskクラスとBeginInvokeメソッド
- 4.5 TaskクラスとInvokeAsyncメソッド
- 4.6 頻繁にUI更新
- 4.7 BackgroundWorkerで頻繁にUI更新
- 4.8 Queueクラスで頻繁にUI更新
- 第5章 Taskと例外
- 5.1 async/awaitで例外処理
- 5.2 Waitで捕捉
- 5.3 捕捉できない
- 5.4 戻り値
- 5.5 UIと例外
- 5.6 複数タスクと例外
- 5.7 配列タスクと例外
- 第6章 排他処理
- 6.1 Interlockedクラス
- 6.2 Monitorクラス
- 6.3 lock文
- 6.4 AutoResetEventクラス
- 6.5 Mutexクラス
- 6.6 Semaphoreクラス
- 6.7 コンカレントコレクション
- 6.8 コンカレントコレクション応用
- 第7章 Parallelクラス
- 7.1 単純なParallel.For
- 7.2 単純なParallel.ForEach
- 7.3 Stopメソッドで脱出
- 7.4 IsStoppedプロパティを監視
- 7.5 Breakメソッドで脱出
- 7.6 LowestBreakIterationプロパティ
- 7.7 スレッドローカル変数とParallel.For
- 7.8 スレッドローカル変数とParallel.ForEach
- 7.9 ループ取り消し
- 7.10 Partitionerクラス
- 7.11 分割数の指定
- 7.12 Parallel.Invoke
- 付 録
- 付録A Visual Studioのインストール
- 付録B プロジェクト作成