#include <graph.h>
Inheritance diagram for tbb::buffer_node< T >:
Public Types | |
typedef T | input_type |
The input type of this receiver. | |
typedef T | output_type |
The output type of this sender. | |
typedef sender< input_type > | predecessor_type |
The predecessor type for this node. | |
typedef receiver< output_type > | successor_type |
The successor type for this node. | |
Public Member Functions | |
buffer_node (graph &g) | |
Constructor. | |
bool | register_successor (receiver< output_type > &r) |
Adds a new successor. | |
bool | remove_successor (receiver< output_type > &r) |
Removes a successor. | |
bool | try_get (T &v) |
Request an item from the buffer_node. | |
bool | try_reserve (T &v) |
Reserves an item. | |
bool | try_release () |
Release a reserved item. | |
bool | try_consume () |
Consumes a reserved item. | |
bool | try_put (T t) |
Receive an item. | |
Protected Types | |
typedef size_t | size_type |
typedef std::pair< T, bool > | item_type |
reg_succ | |
rem_succ | |
req_item | |
res_item | |
rel_res | |
con_res | |
put_item | |
try_fwd | |
WAIT = 0 | |
SUCCEEDED | |
FAILED | |
enum | op_type { reg_succ, rem_succ, req_item, res_item, rel_res, con_res, put_item, try_fwd } |
enum | op_stat { WAIT = 0, SUCCEEDED, FAILED } |
Protected Member Functions | |
virtual void | handle_operations (buffer_operation *op_list) |
virtual void | forward () |
This is executed by an enqueued task, the "forwarder". | |
virtual void | internal_reg_succ (buffer_operation *op) |
Register successor. | |
virtual void | internal_rem_succ (buffer_operation *op) |
Remove successor. | |
virtual void | internal_forward (buffer_operation *op) |
Tries to forward valid items to successors. | |
virtual void | internal_push (buffer_operation *op) |
virtual void | internal_pop (buffer_operation *op) |
virtual void | internal_reserve (buffer_operation *op) |
virtual void | internal_consume (buffer_operation *op) |
virtual void | internal_release (buffer_operation *op) |
void | grow_my_array (size_t minimum_size) |
Grows the internal array. | |
Protected Attributes | |
internal::round_robin_cache< T, null_rw_mutex > | my_successors |
task * | my_parent |
item_type * | my_array |
size_type | my_array_size |
size_type | my_head |
size_type | my_tail |
spin_mutex | my_mutex |
bool | my_reserved |
size_type | my_reserved_id |
bool | forwarder_busy |
internal::aggregator< my_functor_t, buffer_operation > | my_aggregator |
Static Protected Attributes | |
static const size_type | initial_buffer_size = 4 |
Friends | |
class | internal::forward_task< buffer_node< T > > |
Classes | |
class | buffer_operation |
class | my_functor_t |
bool tbb::buffer_node< T >::register_successor | ( | receiver< output_type > & | r | ) | [inline, virtual] |
Adds a new successor.
Adds successor r to the list of successors; may forward tasks.
Implements tbb::sender< T >.
bool tbb::buffer_node< T >::remove_successor | ( | receiver< output_type > & | r | ) | [inline, virtual] |
Removes a successor.
Removes successor r from the list of successors. It also calls r.remove_predecessor(*this) to remove this node as a predecessor.
Implements tbb::sender< T >.
bool tbb::buffer_node< T >::try_consume | ( | ) | [inline, virtual] |
Consumes a reserved item.
true = item is removed from sender and reservation removed
Reimplemented from tbb::sender< T >.
bool tbb::buffer_node< T >::try_get | ( | T & | v | ) | [inline, virtual] |
Request an item from the buffer_node.
true = v contains the returned item
false = no item has been returned
Reimplemented from tbb::sender< T >.
bool tbb::buffer_node< T >::try_put | ( | T | t | ) | [inline, virtual] |
bool tbb::buffer_node< T >::try_release | ( | ) | [inline, virtual] |
Release a reserved item.
true = item has been released and so remains in sender
Reimplemented from tbb::sender< T >.
bool tbb::buffer_node< T >::try_reserve | ( | T & | v | ) | [inline, virtual] |
Reserves an item.
false = no item can be reserved
true = an item is reserved
Reimplemented from tbb::sender< T >.