BRE12
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
tbb::flow::interface8::continue_receiver Class Referenceabstract

Base class for receivers of completion messages. More...

#include <flow_graph.h>

Inheritance diagram for tbb::flow::interface8::continue_receiver:
tbb::flow::interface8::receiver< continue_msg >

Public Types

typedef continue_msg input_type
 The input type.
 
typedef receiver< input_type >::predecessor_type predecessor_type
 The predecessor type for this node.
 
- Public Types inherited from tbb::flow::interface8::receiver< continue_msg >
typedef continue_msg input_type
 The input type of this receiver.
 
typedef sender< continue_msgpredecessor_type
 The predecessor type for this node.
 

Public Member Functions

 continue_receiver (int number_of_predecessors=0)
 Constructor.
 
 continue_receiver (const continue_receiver &src)
 Copy constructor.
 
virtual ~continue_receiver ()
 Destructor.
 
bool register_predecessor (predecessor_type &)
 Increments the trigger threshold.
 
bool remove_predecessor (predecessor_type &)
 Decrements the trigger threshold. More...
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< continue_msg >
virtual ~receiver ()
 Destructor.
 
bool try_put (const continue_msg &t)
 Put an item to the receiver.
 
virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 

Protected Member Functions

task * try_put_task (const input_type &)
 
void reset_receiver (reset_flags f)
 
virtual task * execute ()=0
 Does whatever should happen when the threshold is reached. More...
 
bool is_continue_receiver ()
 

Protected Attributes

spin_mutex my_mutex
 
int my_predecessor_count
 
int my_current_count
 
int my_initial_predecessor_count
 

Friends

template<typename R , typename B >
class run_and_put_task
 
template<typename X , typename Y >
class internal::broadcast_cache
 
template<typename X , typename Y >
class internal::round_robin_cache
 
template<typename U >
class limiter_node
 
template<typename TT , typename M >
class internal::successor_cache
 

Detailed Description

Base class for receivers of completion messages.

These receivers automatically reset, but cannot be explicitly waited on

Member Function Documentation

§ execute()

virtual task* tbb::flow::interface8::continue_receiver::execute ( )
protectedpure virtual

Does whatever should happen when the threshold is reached.

This should be very fast or else spawn a task. This is called while the sender is blocked in the try_put().

§ remove_predecessor()

bool tbb::flow::interface8::continue_receiver::remove_predecessor ( predecessor_type )
inline

Decrements the trigger threshold.

Does not check to see if the removal of the predecessor now makes the current count exceed the new threshold. So removing a predecessor while the graph is active can cause unexpected results.


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