Constructors for Flow Graph nodes

Constructors for Flow Graph nodes#

[flow_graph.helper_functions.constructors]

Note

To enable this preview feature, define the TBB_PREVIEW_FLOW_GRAPH_FEATURES macro to 1.

The “Helper Functions for Expressing Graphs” feature adds a set of new constructors that can be used to construct a node that follows or precedes a set of nodes.

Where possible, the constructors support Class Template Argument Deduction (since C++17).

// Defined in header <oneapi/tbb/flow_graph.h>

// continue_node
continue_node(decltype(follows(...)), Body body, Policy = Policy());
continue_node(decltype(precedes(...)), Body body, Policy = Policy());

continue_node(decltype(follows(...)), int number_of_predecessors, Body body, Policy = Policy());
continue_node(decltype(precedes(...)), int number_of_predecessors, Body body, Policy = Policy());

// function_node
function_node(decltype(follows(...)), Body body, std::size_t concurrency, Policy = Policy());
function_node(decltype(precedes(...)), Body body, std::size_t concurrency, Policy = Policy());

// input_node
input_node(decltype(precedes(...)), Body body);

// multifunction_node
multifunction_node(decltype(follows(...)), std::size_t concurrency, Body body);
multifunction_node(decltype(precedes(...)), std::size_t concurrency, Body body);

// async_node
async_node(decltype(follows(...)), std::size_t concurrency, Body body);
async_node(decltype(precedes(...)), std::size_t concurrency, Body body);

// overwrite_node
explicit overwrite_node(decltype(follows(...)));
explicit overwrite_node(decltype(precedes(...)));

// write_once_node
explicit write_once_node(decltype(follows(...)));
explicit write_once_node(decltype(precedes(...)));

// buffer_node
explicit buffer_node(decltype(follows(...)));
explicit buffer_node(decltype(precedes(...)));

// queue_node
explicit queue_node(decltype(follows(...)));
explicit queue_node(decltype(precedes(...)));

// priority_queue_node
explicit priority_queue_node(decltype(follows(...)), const Compare& comp = Compare());
explicit priority_queue_node(decltype(precedes(...)), const Compare& compare = Compare());

// sequencer_node
sequencer_node(decltype(follows(...)), const Sequencer& s);
sequencer_node(decltype(precedes(...)), const Sequencer& s);

// limiter_node
limiter_node(decltype(follows(...)), std::size_t threshold);
limiter_node(decltype(precedes(...)), std::size_t threshold);

// broadcast_node
explicit broadcast_node(decltype(follows(...)));
explicit broadcast_node(decltype(precedes(...)));

// join_node
explicit join_node(decltype(follows(...)), Policy = Policy());
explicit join_node(decltype(precedes(...)), Policy = Policy());

// key_matching join_node
template <typename B0, typename... BN>
join_node(decltype(follows(...)), B0 b0, BN... bn);
template <typename B0, typename... BN>
join_node(decltype(precedes(...)), B0 b0, BN... bn);

// split_node
explicit split_node(decltype(follows(...)));
explicit split_node(decltype(precedes(...)));

// indexer_node
indexer_node(decltype(follows(...)));
indexer_node(decltype(precedes(...)));

See Also

follows and precedes functions