【C#】非同期処理を実装するいくつかの方法

非同期を実現するのに方法がいくつもあって分かりにくかったのでめも。

非同期処理の種類

非同期処理にはいくつかのタイプがありますが、大きく分けて以下の2種類があります。
それぞれ書き方や使うクラス、ライブラリが異なります。

1.バックグラウンド処理

メインスレッド以外で行う処理のことを言います。

負荷の高い計算や、I/O待ちなどによって、CPUやスレッド資源を保持し続けないために、 別スレッドでの計算やI/O待ちを行います。

例)非同期メソッド ( async / await キーワード )
  BackGroundWorkerコンポーネント 

2.並列処理

複数のスレッドを用いて処理することを言います。


①並列計算

マルチコアCPUの性能を最大限引き出すために、同じ計算を複数のコアで同時に実行します

②データ並列

同じ処理を異なるデータに対して繰り返し行います。

例)Parallel クラス(System.Threading.Tasks 名前空間)
  ・Parallel.Forメソッド
  ・Parallel.ForEachメソッド
  ParallelEnumerable クラス(System.Linq名前空間。通称「並列 LINQ」)

③タスク並列

異なる処理が独立して動いていて、その間で非同期にデータのやり取り(非同期データフロー)を行います。

例)Taskクラス(System.Threading.Tasks 名前空間)
  Threadクラス
  TPL Dataflow ライブラリを利用する

今日はここまで。