BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Microsoft .NETでの並列プログラミング

Microsoft .NETでの並列プログラミング

原文(投稿日:2010/09/02)へのリンク

Patterns&Practicesチームが、.NETで並列プログラムを書くためのガイダンスである『Microsoft .NETでの並列プログラミング』という書籍をリリースした。この本には、並列プログラミングのための6つのデザインパターンがサンプルコード付きで収録されている。

『Microsoft .NETでの並列プログラミング』は、1つの課題を並列に実行できる複数のタスクに再構成し、並列プログラムのパフォーマンスに劇的な影響を与えてしまいかねない同期処理を避けるために、並列タスクを連携させたりタスク間でデータを共有したりするといった困難な作業に取り組んでいる。そのために、この本では.NET 4のタスク並列ライブラリ (TPL)やPLINQを使った6つのデザインパターンを紹介している。

  1. 並列ループ (Parallel Loops) : 複数の同じようなデータ入力に対し同じ処理を適用したい場合に使用する。
  2. 並列タスク (Parallel Tasks) : 複数の異なるデータ入力に対しそれぞれ異なる処理を適用したい場合に使用する。
  3. 並列集約 (Parallel Aggregation) : “並列集約は、部分的な処理結果をマージするアルゴリズムに特別な処理ステップを追加するものです。このパターンは縮退処理を表現しており、Map/Reduceはこのパターンの変化形の1つです。”
  4. 先物 (Futures) : データフローと制御フローを統合する場合に使用する。“先物 (Futures)とは、最初は計算結果が不明ですが後になって結果を利用できるようになるような場合に、計算結果の代わりとするものです。結果を計算するプロセスは他の計算処理と並列で動作させることができます。”
  5. 動的タスク並列処理 (Dynamic Task Parallelism) : 再帰的分解という名前でも知られるパターンで、計算処理の実行中に動的に生成されたタスクを追加できる。
  6. パイプライン (Pipelines) : このパターンは並列タスクの概念を並行キューの概念と結合するもので、プログラムはデータ入力のタスクを並行に実行できるが、データが処理される順番は尊重する。

各々のデザインパターンにはC#VB.NETF#のコードサンプルが用意されており、すべてのコードサンプルはCodePlexにある『Microsoft .NETでの並列プログラミング』プロジェクトからダウンロードできる。このプロジェクトは、並列パターンライブラリ(PPL)非同期エージェントライブラリを使っているC++開発者のために関連書籍を作ろうとしているpatterns & practicesチームの意図に言及している。

このガイドには、並列デザインパターンをFaçadeパターンやDecoratorパターンやRepositoryパターンといった他のOOPパターンと統合することについてのアドバイスが含まれている。また、Visual Studio 2010で並列アプリケーションをデバッグしたりプロファイリングしたりする方法も説明している。

この記事に星をつける

おすすめ度
スタイル

BT