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_node
は receiver<TupleType>
であり、sender
出力ポートのタプルを持ちます。各出力ポートは対応するタプル要素タイプで指定されます。このノードは、1 つの入力ポートでタプルを受け取り、タプルの各要素からメッセージを生成して、対応する出力ポートに渡します。
split_node
には、discarding と broadcast-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
の出力ポートに接続されているノードにブロードキャストします。v
のi
番目の要素がi
番目の出力ポートにブロードキャストされます。戻り値:
true
- output_ports_type &output_ports()
戻り値: 出力ポートの
std::tuple
を返します。