filter クラス

概要

パイプライン中のフィルターを表す抽象的な基本クラス。

ヘッダー

        #include "tbb/pipeline.h"
      

構文

        class filter;
      

説明

filter は、pipeline 中のフィルターを表します。フィルターには 3 つのモードがあります。

filter のモードは、コンストラクターの引数で指定されます。並列処理による速度向上が見込めるため、可能な限り並列フィルターを使用します。シリアルフィルターでなければならない場合は、可能な限り処理順序に対する制約の少ない順不同のモードを使用します。

filter クラスは、pipeline クラスとともにのみ使用してください。

ヒント

後にアイテムを入力順に処理しなければならない serial_in_order ステージがある場合は、serial_in_order 入力フィルターを使用します。

注意

インテル® TBB 2.0 以前では、並列入力ステージをシリアルとして扱っていました。それ以降のバージョンでは、並列入力ステージを並列に実行できます。そのため、並列入力ステージを指定する場合は、operator() がスレッドセーフでなければなりません。

メンバー

namespace tbb {
    class filter {
    public:
        enum mode {
            parallel = implementation-defined,
            serial_in_order = implementation-defined,
            serial_out_of_order = implementation-defined
        };
        bool is_serial() const;
        bool is_ordered() const;
        virtual void* operator()( void* item ) = 0;
        virtual void finalize( void* item ) {}
        virtual ~filter();
    protected:
        filter( mode );
    };
}
      
次の表は、このテンプレート・クラスのメンバーの詳細な情報を提供します。
メンバー 説明
filter( mode filter_mode)

指定されたモードのフィルターを構築します。

インテル® TBB 2.1 以前にも、bool 引数 is_serial を持つ同様のコンストラクターがありました。このコンストラクターはまだありますが、推奨されていません (付録の「互換性機能」を参照)。

~filter()

フィルターを破棄します。フィルターが pipeline 中にある場合は、自動的にパイプラインから削除されます。

bool is_serial() const

戻り値: フィルターモードが parallel の場合は false、その他の場合は true。

bool is_ordered() const

戻り値: フィルターモードが serial_in_order の場合は false、その他の場合は true。

virtual void* operator()( void * item )

派生したフィルターは、アイテムを処理して、次の filter によって処理されるアイテムへのポインターを返すようにこのメソッドをオーバーライドします。パイプラインの最初のフィルターのアイテム引数は NULL です。

戻り値: 処理するアイテムがない場合、pipeline の最初のフィルターは NULL を返します。パイプラインの最後のフィルターの結果は無視されます。

virtual void finalize( void * item )

パイプラインは、ユーザー要求または例外によって中止できます。パイプラインが中止されると、フィルターの operator() によって、次のフィルターでまだ処理されていないアイテムが返されることがあります。パイプラインが中止された場合、次のフィルターは、operator() の代わりに、各アイテムに対して finalize() を呼び出します。operator() とは異なり、finalize() メソッドは、さらに処理を行えるようにアイテムを返しません。派生フィルターは、アイテムに対して適切なクリーンアップを実行するように finalize() をオーバーライドすべきです。パイプラインは、アイテムに対してほかのメソッドを呼び出しません。

戻り値: デフォルトの定義は効果がありません。

関連情報