.NETにお手軽並列化がやってきた

今月のMSDNマガジンより。.NET3.5 にこんな隠し玉が!.NETに興味がないけど並列化に興味がある人にもおすすめ。

http://msdn.microsoft.com/msdnmag/issues/07/10/Futures/default.aspx?loc=jp

イミフなところもあるけど、とてもおもしろい記事です。

実行時の環境にあわせてスレッド数を動的に調整したり、遊んでいるプロセッサがないように動的に処理を分散したりしてくれるそうな。スゴー。

名前は Parallel FX Library の Task Parallel Library (TPL) だそうで。id:siokoshou:20070508 で書いた OpenMP チックな並列実行が .NET3.5 に入るみたい。実行するマシンがシングルコアなら普通に順次実行して、複数コアなら作業負荷に応じて並列で実行だって。制御文はデリゲートを引数に取る仕組みで、どこかの言語みたい。
従来のスレッドより簡単に使えて、かつ、実行時のプロセッサの数や状況に応じて処理を分散してくれるっつーのはいいですねぇ。並列ソートはすぐにも使えそう。こういう並列化がうまくハマル画像処理とかそういったモノには強力かと。はまらないものにも Parallel.Do とか フューチャ っていうのでがんばって手助けしてくれるようです。
Work-stealing (ワーク スティーリング)という方法で作業負荷を「動的に分散」するんだそうな。おもしろい。今はこんなに難しいよって例として挙げてる、図1はすごいなぁ。でもこれより高度なことしてくれるんですねぇ。