xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

2011-07-01から1ヶ月間の記事一覧

TPL入門 (6) - 例外処理

TPL

今回は並列処理中に発生した例外の扱い方について見ていきます。 TPLの例外 通常例外処理をする場合、特に何も意識することなく発生するであろう例外の型をcatchに書くでしょう。しかし処理が並列に実行されているとなると、同時に複数の例外が発生する可能…

TPL入門 (5) - スレッドローカル変数

TPL

今回はスレッドローカル変数を利用したパフォーマンス向上について見ていきます。 スレッドローカル変数の必要性 例えば、とある数値コレクションの値を合計したいとします。通常のfor/foreach文のループを用いて合計する場合は、何も気にすることなくひとつ…

TPL入門 (4) - ループの中断/停止

TPL

今回は並列ループを中断/停止する方法について見ていきます。 通常のfor/foreach文はbreakでループをエスケープすることができるのはご承知の通りと思いますが、残念ながらParallel.For/ForEachの中ではそれができません。for/foreach文はれっきとしたループ…

TPL入門 (3) - 挙動の観察

TPL

並列実行時にCPUがどのように動いているのか、今回はその挙動をもう少し視覚的に確認していきます。 CPU使用率を確認 下記のサンプルコードはfor文とParallel.For文の中で長いループ処理をしているだけの簡単なものです。それぞれの経過時間の測定も行ってい…

TPL入門 (2) - 単純なループ

TPL

今回はコレクション要素に対して同様の処理を並列に行う方法について考えます。そのシナリオをサポートするために、TPLではSystem.Threading.Tasks名前空間に並列実行可能なFor/ForEach文が提供されています。 Parallel.ForEach 最も簡単なParallel.ForEach…

TPL入門 (1) - はじめに

TPL

近年のCPUの進化はクロック数を上げる方向ではなく、複数コアを載せる方向に進んでいます。1コアの処理速度を上げることに対する限界が来ているからです。コアを複数にすることで並列に処理を行えるようにし、全体としての処理速度を改善しようというのが狙…