ここまで見てきた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のようになる。
コンカレンシ・ランタイムには,タスク・グループや,並列プログラミングを行うときに使えるアルゴリズムやデータ構造が詰まっている。前述したアドレスを参照し,左側に表示されるツリーを使って情報を得るとよい。