In an Intel® Threading Building Blocks (Intel® TBB) flow::graph, nodes which forward messages to successors have one of two possible forwarding policies, which are a property of the node:
There are two policies for handling a message which cannot be pushed to any successor:
There are two policies for handling the reception of a message by a node:
overwrite_node and write_once_node support reservation as a preview feature. Look at "Reservable single-item nodes" reference for more details.
The following table lists the policies of each node:
Node |
Reception Policy |
try_get()? |
try_reserve()? |
Forwarding |
---|---|---|---|---|
Functional Nodes |
||||
source_node |
-- |
yes |
yes |
broadcast-push |
function_node<rejecting> |
accept/switch |
no |
no |
broadcast-push |
function_node<queueing> |
accept |
no |
no |
broadcast-push |
continue_node |
accept |
no |
no |
broadcast-push |
multifunction_node<rejecting> |
accept/switch |
no |
no |
broadcast-push |
multifunction_node<queueing> |
accept |
no |
no |
broadcast-push |
Buffering Nodes |
||||
buffer_node |
accept |
yes |
yes |
single-push |
priority_queue_node |
accept |
yes |
yes |
single-push |
queue_node |
accept |
yes |
yes |
single-push |
sequencer_node |
accept |
yes |
yes |
single-push |
overwrite_node |
accept |
yes |
no |
broadcast-push |
write_once_node |
accept once |
yes |
no |
broadcast-push |
Split/Join Nodes |
||||
join_node<queueing> |
accept |
yes |
no |
broadcast-push |
join_node<reserving> |
switch |
yes |
no |
broadcast-push |
join_node<tag_matching> |
accept |
yes |
no |
broadcast-push |
split_node |
accept |
no |
no |
broadcast-push |
indexer_node |
accept |
no |
no |
broadcast-push |
Other Nodes |
||||
broadcast_node |
accept |
no |
no |
broadcast-push |
limiter_node |
accept/switch |
no |
no |
broadcast-push |