#include "tbb/pipeline.h"
class pipeline;
pipeline は、アイテムのストリームへのフィルターを含む、パイプライン化された一連のアプリケーションを表します。各フィルターは特定のモードで実行します: parallel、serial_in_order、または serial_out_of_order (MacDonald 2004)。
pipeline は、ここで fi として示された 1 つ以上のフィルターを含みます。i は、パイプラインにおけるフィルターの位置を示します。パイプラインは、f0 フィルターで開始し、f1、f2、... と続きます。次のステップで、クラス・パイプラインの使用方法を説明します。
十分なプロセッサーとトークンが提供された場合、パイプラインの処理能力は、最も遅いシリアルフィルターの処理能力に制限されます。
parallel_pipeline 関数は、パイプラインの構築および実行用の厳密な型のラムダ・フレンドリーなインターフェイスを提供します。
namespace tbb { class pipeline { public: pipeline(); ~pipeline(); void add_filter( filter& f ); void run( size_t max_number_of_live_tokens [, task_group_context& group ] ); void clear(); }; }
現在の実装では、デストラクターを仮想として宣言していますが、これに依存しないでください。仮想は推奨されていません。インテル® TBB の将来のバージョンでは、廃止される可能性があります。
メンバー | 説明 |
---|---|
pipeline() |
フィルターなしのパイプラインを構築します。 |
~pipeline() |
パイプラインからすべてのフィルターを削除してパイプラインを破棄します。 |
void add_filter( filter& f ) |
パイプラインのフィルターのシーケンスにフィルター f を追加します。フィルター f は、すでにパイプライン中にあってはなりません。 |
void run( size_t max_number_of_live_tokens[, task_group_context& group] ) |
最初のフィルターが NULL を返し、後のフィルターがそれぞれ、その前からのアイテムをすべて処理するまで、パイプラインを実行します。並列に処理されるアイテムの数は、パイプラインの構造と利用可能なスレッド数に依存します。同時に最大 max_number_of_live_tokens を実行できます。 パイプラインは複数回実行することができます。各実行の間にステージを追加できます。パイプラインの同じインスタンス上で同時に実行を複数呼び出すことは禁止されています。 group 引数が指定されている場合、パイプラインのタスクはこのグループで実行されます。デフォルトでは、アルゴリズムは自身がバインドされているグループで実行されます。 |
void clear() |
パイプラインからすべてのフィルターを削除します。 |