ネタ元:インテルTBB 3.0によるパイプライン処理
επιστημηさんの記事です。TBB3.0(VS2010環境だとラムダOK)で新たに加わったパイプライン関数のお話です。
パイプライン処理って何?という人は元記事見てください(1ページ目だけでも十分ですが、3ページ目最後の実行結果が並列並列してていい感じですw)。
ということで、さっそくPPLに移植しました。といっても、PPLにはパイプラインの仕組みそのものはありません。なので、別途agents ライブラリにある、非同期メッセージのtransferオブジェクトを使って実装します(まぁ、これを数珠つなぎにするのがパイプラインなんですがw)。
感じとしては、3ページ目の make_filter() を直接渡すではなく、それでオブジェクトを作っておいて、それぞれをつないでいくという感じです。
そして、最後に明示的にメッセージを送ってやれば、あとは粛々と処理を行ってくれます。もちろん、並列に。。。
エントリー見たのが、3時ころだったかな?ちなみに今の時点で5時半です。
2時間ばかりはまってました。。。だって、結果でねーんだもの...orz
ということで、こいつもありがたーくいただきました。
結果は、6/26 のわんくま同盟東京勉強会 に持っていきますよ。やるかどうかは当日の皆さんの心意気次第ですがw