読者です 読者をやめる 読者になる 読者になる

メモ書き

自分が後で見直すためにつけている作業のメモ書きです.それ以上の意味はありません

.NET Framework によるマルチスレッド機能の概要

2年くらい前に Microsoft の無料セミナ「C#応用編 マルチスレッドプログラミング」に参加した時のメモ.
(いまさら)

はなしの流れ(たしかこんな感じだったと思う)

近年,PCのプロセッサはほとんどが性能向上のため複数のコアを搭載している.ソフトウェア性能向上には複数のコアを用いて複数の処理を同時並行的に処理することが重要であり,そのためのプログラミングが必要である.

.NET Framework 4.0より以前では,マルチスレッド処理の記述にThreadクラス(またはThreadPoolクラス)を用いる方法が一般的であった.この場合,引数および戻り値の受け渡し手順が煩雑であること,ならびに,生成したスレッドで発生した例外を受け取って処理することが難しい,などなどの問題があった.

.NET Framework 4.0 からはTask Parallel Library(TPL)と呼ばれるライブラリが導入された.TPLではTaskクラス,async修飾子, await演算子,およびParallelクラスが利用可能である(ただしasync, awaitは.NET Framework4.5から).
Taskクラスにより引数及び返値の取り扱いが容易になり,例外も取得出来るようになる.async, awaitによりメソッドの非同期実行およびスレッド間同期が簡潔に記述出来る.

さらに,Parallelクラスの利用により,既存処理の並列化が簡潔な記述で実現でき,スレッドの並列化の度合い(次数)をフレームワークの判断に任せることが出来る.