flow_graph.h File Reference

The graph related classes and functions. More...

`#include "internal/_warning_suppress_enable_notice.h"`
`#include "tbb_stddef.h"`
`#include "atomic.h"`
`#include "spin_mutex.h"`
`#include "null_mutex.h"`
`#include "spin_rw_mutex.h"`
`#include "null_rw_mutex.h"`
`#include "task.h"`
`#include "cache_aligned_allocator.h"`
`#include "tbb_exception.h"`
`#include "internal/_template_helpers.h"`
`#include "internal/_aggregator_impl.h"`
`#include "tbb_profiling.h"`
`#include "task_arena.h"`
`#include <vector>`
`#include <memory>`
`#include <array>`
`#include <unordered_map>`
`#include <type_traits>`
`#include <tuple>`
`#include <list>`
`#include <queue>`
`#include "internal/_flow_graph_impl.h"`
`#include "internal/_flow_graph_trace_impl.h"`
`#include "internal/_tbb_hash_compare_impl.h"`
`#include "internal/_flow_graph_body_impl.h"`
`#include "internal/_flow_graph_cache_impl.h"`
`#include "internal/_flow_graph_types_impl.h"`
`#include "internal/_flow_graph_async_msg_impl.h"`
`#include "internal/_flow_graph_node_impl.h"`
`#include "internal/_flow_graph_join_impl.h"`
`#include "internal/_flow_graph_indexer_impl.h"`
`#include "internal/_flow_graph_streaming_node.h"`
`#include "internal/_flow_graph_node_set_impl.h"`
`#include "internal/_flow_graph_nodes_deduction.h"`
`#include "internal/_warning_suppress_disable_notice.h"`
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...
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::limiter_node< T, DecrementType >
| Forwards messages only if the threshold has not been reached. More...
class | tbb::flow::interface11::run_and_put_task< R, B >
class | tbb::flow::interface11::internal::successor_cache< T, M >
class | tbb::flow::interface11::internal::broadcast_cache< T, M >
class | tbb::flow::interface11::internal::round_robin_cache< T, M >
class | tbb::flow::interface11::internal::predecessor_cache< T, M >
class | tbb::flow::interface11::internal::reservable_predecessor_cache< T, M >
class | tbb::flow::interface11::async_msg< T >
class | tbb::flow::interface11::internal::async_storage< T >
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::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, A >
| Forwards messages in arbitrary order. More...
class | tbb::flow::interface11::buffer_node< T, A >::buffer_operation
class | tbb::flow::interface11::queue_node< T, A >
| Forwards messages in FIFO order. More...
class | tbb::flow::interface11::sequencer_node< T, A >
| Forwards messages in sequence order. More...
class | tbb::flow::interface11::priority_queue_node< T, Compare, A >
| 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, JP >
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, T1, T2, T3, T4, T5, T6, T7, T8, T9 >
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< InputTuple, OutputTuple >
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))

## 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::task * | tbb::flow::interface11::combine_tasks (graph &g, tbb::task *left, tbb::task *right)
template<typename K , typename T >
K | 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...

## 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_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 45 of file flow_graph.h.

## FLOW_SPAWN

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

Definition at line 63 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.