# tbb::flow::interface6::graph Class Reference

The graph class. More...

`#include <flow_graph.h>`

List of all members.

## Classes
class | run_and_put_task
class | run_task
## Public Types
typedef graph_iterator< graph, graph_node > | iterator
typedef graph_iterator< const graph, const graph_node > | const_iterator
## Public Member Functions
| graph ()
| Constructs a graph with isolated task_group_context.
| graph (task_group_context &use_this_context)
| Constructs a graph with use_this_context as context.
| ~graph ()
| Destroys the graph.
void | increment_wait_count ()
| Used to register that an external entity may still interact with the graph.
void | decrement_wait_count ()
| Deregisters an external entity that may have interacted with the graph.
template<typename Receiver , typename Body >
void | run (Receiver &r, Body body)
| Spawns a task that runs a body and puts its output to a specific receiver.
template<typename Body >
void | run (Body body)
| Spawns a task that runs a function object.
void | wait_for_all ()
| Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls.
task * | root_task ()
| Returns the root task of the graph.
iterator | begin ()
| start iterator
iterator | end ()
| end iterator
const_iterator | begin () const
| start const iterator
const_iterator | end () const
| end const iterator
const_iterator | cbegin () const
| start const iterator
const_iterator | cend () const
| end const iterator
bool | is_cancelled ()
| return status of graph execution
bool | exception_thrown ()
void | reset ()
## Friends
class | graph_node
class | graph_iterator

## Detailed Description

The graph class.

This class serves as a handle to the graph

## Constructor & Destructor Documentation

tbb::flow::interface6::graph::~graph | ( |  | ) | `[inline]`

Destroys the graph.

Calls wait_for_all, then destroys the root task and context.

References tbb::task::destroy(), tbb::task::set_ref_count(), and wait_for_all().

## Member Function Documentation

void tbb::flow::interface6::graph::decrement_wait_count | ( |  | ) | `[inline]`

Deregisters an external entity that may have interacted with the graph.

The graph will not return from wait_for_all until all the number of decrement_wait_count calls matches the number of increment_wait_count calls.

References tbb::task::decrement_ref_count().

void tbb::flow::interface6::graph::increment_wait_count | ( |  | ) | `[inline]`

Used to register that an external entity may still interact with the graph.

The graph will not return from wait_for_all until a matching number of decrement_wait_count calls is made.

References tbb::task::increment_ref_count().

template<typename Body >

void tbb::flow::interface6::graph::run | ( | Body | body | ) | `[inline]`

Spawns a task that runs a function object.

The task is spawned as a child of the graph. This is useful for running tasks that need to block a wait_for_all() on the graph. For example a one-off source.

References tbb::task::enqueue().

template<typename Receiver , typename Body >

void tbb::flow::interface6::graph::run | ( | Receiver & | r,
|  | Body | body |
| ) |  |  | `[inline]`

Spawns a task that runs a body and puts its output to a specific receiver.

The task is spawned as a child of the graph. This is useful for running tasks that need to block a wait_for_all() on the graph. For example a one-off source.

References tbb::task::enqueue().

void tbb::flow::interface6::graph::wait_for_all | ( |  | ) | `[inline]`

Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls.

The waiting thread will go off and steal work while it is block in the wait_for_all.

References tbb::task_group_context::is_group_execution_cancelled(), tbb::task_group_context::reset(), tbb::task::set_ref_count(), and tbb::task::wait_for_all().

Referenced by ~graph().

The documentation for this class was generated from the following file:

- flow_graph.h

Copyright © 2005-2013 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.