continue_node
[flow_graph.continue_node]
トリガーされた時に指定されたボディー・オブジェクトを実行するノード。
// <oneapi/tbb/flow_graph.h> ヘッダーで定義
namespace oneapi {
namespace tbb {
namespace flow {
template< typename Output, typename Policy = /*implementation-defined*/ >
class continue_node : public graph_node, public receiver<continue_msg>, public sender<Output> {
public:
template<typename Body>
continue_node( graph &g, Body body, node_priority_t priority = no_priority );
template<typename Body>
continue_node( graph &g, Body body, Policy /*unspecified*/ = Policy(),
node_priority_t priority = no_priority );
template<typename Body>
continue_node( graph &g, int number_of_predecessors, Body body,
node_priority_t priority = no_priority );
template<typename Body>
continue_node( graph &g, int number_of_predecessors, Body body,
Policy /*unspecified*/ = Policy(), node_priority_t priority = no_priority );
continue_node( const continue_node &src );
~continue_node();
bool try_put( const input_type &v );
bool try_get( output_type &v );
};
} // namespace flow
} // namespace tbb
} // namespace oneapi
要件:
Output
タイプは、[copyconstructible] ISO C++ 標準の CopyConstructible の要件を満たしている必要があります。Policy
は、軽量ポリシーをデフォルトにできます。Body
タイプは、ContinueNodeBody 要件を満たしている必要があります。
continue_node
は、graph_node
、receiver<continue_msg>
、および sender<Output>
です。
このノードは、先行するノードの完了を待機してから実行を開始するノードに使用されますが、入力エッジを超えて明示的なデータが渡されることはありません。
continue_node
は、先行するノード数を定義する内部のしきい値を保持します。この値は作成時に与えられます。レシーバーとして continue_node
を使用して make_edge 関数を呼び出すと、しきい値が増加します。また、レシーバーとして continue_node
を使用し remove_edge 関数を呼び出すと、しきい値は減少します。
try_put()
呼び出し回数が定義されたしきい値に達するごとにノードの body
が呼び出され、ノードは最初から try_put()
呼び出し回数のカウントを開始します。
continue_node
には、discarding と broadcast-push プロパティーがあります。
continue_node
に渡されたボディー・オブジェクトはコピーされます。メンバー変数を更新してもノードの作成に使用された元のオブジェクトには影響しません。ノードの外部からボディー・オブジェクト内に保持されている状態を確認する必要がある場合、copy_body 関数を使用して更新されたコピーを取得します。
メンバー関数
template<typename Body>
continue_node( graph &g, Body body, node_priority_t priority = no_priority );
body
を呼び出す continue_node
を構築します。内部しきい値は 0 に設定されます。
この関数はノードの優先順位を指定します。
template<typename Body>
continue_node( graph &g, Body body, Policy /*unspecified*/ = Policy(),
node_priority_t priority = no_priority );
body
を呼び出す continue_node
を構築します。内部しきい値は 0 に設定されます。
この関数は、軽量ポリシーとノードの優先順位を指定します。
template<typename Body>
continue_node( graph &g, int number_of_predecessors, Body body,
node_priority_t priority = no_priority );
body
を呼び出す continue_node
を構築します。内部しきい値は number_of_predecessors
に設定されます。
この関数はノードの優先順位を指定します。
template<typename Body>
continue_node( graph &g, int number_of_predecessors, Body body,
Policy /*unspecified*/ = Policy(), node_priority_t priority = no_priority );
body
を呼び出す continue_node
を構築します。内部しきい値は number_of_predecessors
に設定されます。
この関数は、軽量ポリシーとノードの優先順位を指定します。
template<typename Body>
continue_node( graph &g, int number_of_predecessors, Body body );
body
を呼び出す continue_node
を構築します。内部しきい値は number_of_predecessors
に設定されます。
continue_node( const continue_node &src )
src
の作成時の状態と同じ初期状態で continue_node
を作成します。try_puts
呼び出しを受信した回数、または既知のプリディセッサー (先行) 数。作成される continue_node
には、src
と同じ graph
オブジェクトへの参照があり、src
で使用される初期 body
のコピーが含まれ、src
がゼロ以外のしきい値である場合にのみそのしきい値が含まれます。
新しいボディー・オブジェクトは、src
の作成時に提供された元のボディーのコピー作成されます。
bool try_put( const Input &v )
try_put()
呼び出しを受信した回数をインクリメントします。インクリメントされたカウント値が既知のプリディセッサー数と等しい場合、body
関数オブジェクトを実行します。ボディーの実行が完了するのを待ちません。
戻り値: true
bool try_get( Output &v )
戻り値: false
デダクション・ガイド
template <typename Body, typename Policy>
continue_node(graph&, Body, Policy, node_priority_t = no_priority)
-> continue_node<continue_output_t<std::invoke_result_t<Body, continue_msg>>, Policy>;
template <typename Body, typename Policy>
continue_node(graph&, int, Body, Policy, node_priority_t = no_priority)
-> continue_node<continue_output_t<std::invoke_result_t<Body, continue_msg>>, Policy>;
template <typename Body>
continue_node(graph&, Body, node_priority_t = no_priority)
-> continue_node<continue_output_t<std::invoke_result_t<Body, continue_msg>>, /*default-policy*/>;
template <typename Body>
continue_node(graph&, int, Body, node_priority_t = no_priority)
-> continue_node<continue_output_t<std::invoke_result_t<Body, continue_msg>>, /*default-policy*/>;
説明:
continue_output_t<Output>
は Output テンプレート引数タイプのエイリアスです。Output がvoid
として指定される場合、continue_output_t<Output>
はcontinue_msg
タイプのエイリアスです。
例
continue_nodes
は依存関係フローグラフを形成します。