(16)Visual C++の「コンカレンシ・ランタイム」 [C++]
出典:日経ソフトウエア2009年10月号
82ページ
(記事は執筆時の情報に基づいており、現在では異なる場合があります) リスト12●C++でparallel_for_eachアルゴリズムを使った例。msdnのページに掲載されているサンプルから,コメントを取ったものだ(using-parallel-for-each.cpp)
[画像のクリックで拡大表示]
ここまで見てきたParallelクラスは .NET Framework4.0の新機能で,PLINQはVBとC#で使える機能だったが,Visual C++専用の並列化機能もある。「コンカレンシ・ランタイム」がそれで,四つのヘッダー・ファイルから利用できる。パラレル・パターンズ・ライブラリ「ppl.h」,非同期エージェント・ライブラリ「agents.h」,ワーク・スケジューラ「concrt.h」,リソース・マネジャ「concrtrm.h」である。 リスト12は,ppl.hを使って,parallel_for_eachアルゴリズムを使った例だ。msdnのページに掲載されているサンプルから,コメントを取ったものである。 (1)でppl.hをインクルードし,(2)でConcurrencyという名前空間を指定している。(5)のmain関数では,(6)で「values」という名前のarray(配列)を作り,五つの要素の値を1から5にする。(7)では処理をパラメータとして記述してparallel_for_eachを呼び出す。これによって,五つの要素はすべて2乗される。(8)は(3)で定義したSquareFunctorクラスを使って2乗をするコード,(9)は(4)で定義したsquare_function関数を使って2乗をするコードである。二乗を3回繰り返すので,(10)で表示する結果は図23のようになる。 コンカレンシ・ランタイムには,タスク・グループや,並列プログラミングを行うときに使えるアルゴリズムやデータ構造が詰まっている。前述したアドレスを参照し,左側に表示されるツリーを使って情報を得るとよい。 連載新着連載目次へ >>
|