Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
flow_graph.h File Reference

The graph related classes and functions. More...

Include dependency graph for flow_graph.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tbb::flow::interface11::null_type
 A generic null type. More...
 
class  tbb::flow::interface11::continue_msg
 An empty class used for messages that mean "I'm done". More...
 
struct  tbb::flow::interface11::internal::async_helpers< T, typename >
 
struct  tbb::flow::interface11::internal::async_helpers< T, typename std::enable_if< std::is_base_of< async_msg< typename T::async_msg_data_type >, T >::value >::type >
 
class  tbb::flow::interface11::internal::untyped_sender
 
class  tbb::flow::interface11::internal::untyped_receiver
 
class  tbb::flow::interface11::sender< T >
 Forward declaration section. More...
 
class  tbb::flow::interface11::receiver< T >
 Pure virtual template class that defines a receiver of messages of type T. More...
 
class  tbb::flow::interface11::continue_receiver
 Base class for receivers of completion messages. More...
 
class  tbb::flow::interface11::input_node< Output >
 An executable node that acts as a source, i.e. it has no predecessors. More...
 
class  tbb::flow::interface11::source_node< Output >
 An executable node that acts as a source, i.e. it has no predecessors. More...
 
class  tbb::flow::interface11::function_node< Input, Output, Policy, Allocator >
 Implements a function node that supports Input -> Output. More...
 
class  tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >
 implements a function node that supports Input -> (set of outputs) More...
 
class  tbb::flow::interface11::split_node< TupleType, Allocator >
 split_node: accepts a tuple as input, forwards each element of the tuple to its More...
 
class  tbb::flow::interface11::continue_node< Output, Policy >
 Implements an executable node that supports continue_msg -> Output. More...
 
class  tbb::flow::interface11::broadcast_node< T >
 Forwards messages of type T to all successors. More...
 
class  tbb::flow::interface11::buffer_node< T, Allocator >
 Forwards messages in arbitrary order. More...
 
class  tbb::flow::interface11::buffer_node< T, Allocator >::buffer_operation
 
class  tbb::flow::interface11::queue_node< T, Allocator >
 Forwards messages in FIFO order. More...
 
class  tbb::flow::interface11::sequencer_node< T, Allocator >
 Forwards messages in sequence order. More...
 
class  tbb::flow::interface11::priority_queue_node< T, Compare, Allocator >
 Forwards messages in priority order. More...
 
class  tbb::flow::interface11::limiter_node< T, DecrementType >
 Forwards messages only if the threshold has not been reached. More...
 
class  tbb::flow::interface11::join_node< OutputTuple, reserving >
 
class  tbb::flow::interface11::join_node< OutputTuple, queueing >
 
class  tbb::flow::interface11::join_node< OutputTuple, key_matching< K, KHash > >
 
class  tbb::flow::interface11::indexer_node< T0 >
 
class  tbb::flow::interface11::indexer_node< T0, T1 >
 
class  tbb::flow::interface11::indexer_node< T0, T1, T2 >
 
class  tbb::flow::interface11::indexer_node< T0, T1, T2, T3 >
 
class  tbb::flow::interface11::indexer_node< T0, T1, T2, T3, T4 >
 
class  tbb::flow::interface11::indexer_node< T0, T1, T2, T3, T4, T5 >
 
class  tbb::flow::interface11::indexer_node< T0, T1, T2, T3, T4, T5, T6 >
 
class  tbb::flow::interface11::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 >
 
class  tbb::flow::interface11::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 >
 
class  tbb::flow::interface11::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >
 
class  tbb::flow::interface11::composite_node< tbb::flow::tuple< InputTypes... >, tbb::flow::tuple< OutputTypes... > >
 
class  tbb::flow::interface11::composite_node< tbb::flow::tuple< InputTypes... >, tbb::flow::tuple<> >
 
class  tbb::flow::interface11::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes... > >
 
class  tbb::flow::interface11::internal::async_body_base< Gateway >
 
class  tbb::flow::interface11::internal::async_body< Input, Ports, Gateway, Body >
 
class  tbb::flow::interface11::async_node< Input, Output, Policy, Allocator >
 Implements async node. More...
 
struct  tbb::flow::interface11::async_node< Input, Output, Policy, Allocator >::try_put_functor
 
class  tbb::flow::interface11::async_node< Input, Output, Policy, Allocator >::receiver_gateway_impl
 
class  tbb::flow::interface11::overwrite_node< T >
 
struct  tbb::flow::interface11::overwrite_node< T >::register_predecessor_task
 Breaks an infinite loop between the node reservation and register_successor call. More...
 
class  tbb::flow::interface11::write_once_node< T >
 

Namespaces

 tbb
 The graph class.
 
 tbb::flow
 
 tbb::flow::interface11
 
 tbb::flow::interface11::internal
 
 tbb::flow::interface10
 

Macros

#define __TBB_flow_graph_H_include_area
 
#define __TBB_NOINLINE_SYM
 
#define FLOW_SPAWN(a)   tbb::task::spawn((a))
 
#define __TBB_DEFAULT_NODE_ALLOCATOR(T)   null_type
 

Enumerations

enum  tbb::flow::concurrency { tbb::flow::unlimited = 0 , tbb::flow::serial = 1 }
 An enumeration the provides the two most common concurrency levels: unlimited and serial. More...
 

Functions

static tbb::tasktbb::flow::interface11::combine_tasks (graph &g, tbb::task *left, tbb::task *right)
 
template<typename K , typename T >
tbb::flow::key_from_message (const T &t)
 
void tbb::flow::interface11::internal_make_edge (internal::untyped_sender &p, internal::untyped_receiver &s)
 
template<typename T >
void tbb::flow::interface11::make_edge (sender< T > &p, receiver< T > &s)
 Makes an edge between a single predecessor and a single successor. More...
 
template<typename TS , typename TR , typename = typename tbb::internal::enable_if<tbb::internal::is_same_type<TS, internal::untyped_sender>::value || tbb::internal::is_same_type<TR, internal::untyped_receiver>::value>::type>
void tbb::flow::interface11::make_edge (TS &p, TR &s)
 
template<typename T >
void tbb::flow::interface11::make_edge (sender< T > &p, receiver< typename T::async_msg_data_type > &s)
 
template<typename T >
void tbb::flow::interface11::make_edge (sender< typename T::async_msg_data_type > &p, receiver< T > &s)
 
template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>
void tbb::flow::interface11::make_edge (T &output, V &input)
 
template<typename T , typename R , typename = typename T::output_ports_type>
void tbb::flow::interface11::make_edge (T &output, receiver< R > &input)
 
template<typename S , typename V , typename = typename V::input_ports_type>
void tbb::flow::interface11::make_edge (sender< S > &output, V &input)
 
void tbb::flow::interface11::internal_remove_edge (internal::untyped_sender &p, internal::untyped_receiver &s)
 
template<typename T >
void tbb::flow::interface11::remove_edge (sender< T > &p, receiver< T > &s)
 Removes an edge between a single predecessor and a single successor. More...
 
template<typename TS , typename TR , typename = typename tbb::internal::enable_if<tbb::internal::is_same_type<TS, internal::untyped_sender>::value || tbb::internal::is_same_type<TR, internal::untyped_receiver>::value>::type>
void tbb::flow::interface11::remove_edge (TS &p, TR &s)
 
template<typename T >
void tbb::flow::interface11::remove_edge (sender< T > &p, receiver< typename T::async_msg_data_type > &s)
 
template<typename T >
void tbb::flow::interface11::remove_edge (sender< typename T::async_msg_data_type > &p, receiver< T > &s)
 
template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>
void tbb::flow::interface11::remove_edge (T &output, V &input)
 
template<typename T , typename R , typename = typename T::output_ports_type>
void tbb::flow::interface11::remove_edge (T &output, receiver< R > &input)
 
template<typename S , typename V , typename = typename V::input_ports_type>
void tbb::flow::interface11::remove_edge (sender< S > &output, V &input)
 
template<typename Body , typename Node >
Body tbb::flow::interface11::copy_body (Node &n)
 Returns a copy of the body from a function or continue node. More...
 

Variables

template<typename T >
class __TBB_DEPRECATED tbb::flow::interface11::async_msg
 

Detailed Description

The graph related classes and functions.

There are some applications that best express dependencies as messages passed between nodes in a graph. These messages may contain data or simply act as signals that a predecessors has completed. The graph class and its associated node classes can be used to express such applications.

Definition in file flow_graph.h.

Macro Definition Documentation

◆ __TBB_DEFAULT_NODE_ALLOCATOR

#define __TBB_DEFAULT_NODE_ALLOCATOR (   T)    null_type

Definition at line 71 of file flow_graph.h.

◆ __TBB_flow_graph_H_include_area

#define __TBB_flow_graph_H_include_area

Definition at line 20 of file flow_graph.h.

◆ __TBB_NOINLINE_SYM

#define __TBB_NOINLINE_SYM

Definition at line 47 of file flow_graph.h.

◆ FLOW_SPAWN

#define FLOW_SPAWN (   a)    tbb::task::spawn((a))

Definition at line 65 of file flow_graph.h.


Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.