split_node

[flow_graph.split_node]

split_node は、受信した std::tuple の各要素を、受信したタプル要素のインデックスと一致する出力ポートに送信します。


// <oneapi/tbb/flow_graph.h> ヘッダーで定義 

namespace oneapi { 
namespace tbb { 
namespace flow { 

    template < typename TupleType > 
    class split_node : public graph_node, public receiver<TupleType> { 
    public: 
        explicit split_node( graph &g ); 
        split_node( const split_node &other ); 
        ~split_node(); 

        bool try_put( const TupleType &v ); 
        using output_ports_type = /*implementation-defined*/ ; 
        output_ports_type& output_ports(); 
    }; 

} // namespace flow 
} // namespace tbb 
} // namespace oneapi

要件:

  • TupleType タイプは std::tuple のインスタンス化でなければなりません。

split_nodereceiver<TupleType> であり、sender 出力ポートのタプルを持ちます。各出力ポートは対応するタプル要素タイプで指定されます。このノードは、1 つの入力ポートでタプルを受け取り、タプルの各要素からメッセージを生成して、対応する出力ポートに渡します。

split_node には、discardingbroadcast-push プロパティーがあります。

split_node は無制限に並列化でき、複数の出力ポートで broadcast_node として動作します。

メンバー関数

explicit split_node(graph &g)

グラフ g で登録された split_node を構築します。

split_node(const split_node &other)

other の作成時の状態と同じ初期状態で split_node を作成します。構築される split_node には、other と同じ graph オブジェクトへの参照が含まれます。other のプレデセッサーおよびサクセサーはコピーされせん。

~split_node()

デストラクター

bool try_put(const TupleType &v)

受け取ったタプルの各要素を、split_nodeの出力ポートに接続されているノードにブロードキャストします。vi 番目の要素が i 番目の出力ポートにブロードキャストされます。

戻り値: true

output_ports_type &output_ports()

戻り値: 出力ポートの std::tuple を返します。