| 
|   | start_scan (sum_node_type *&return_slot_, start_scan &parent_, sum_node_type *parent_sum_) | 
|   | 
|   | start_scan (sum_node_type *&return_slot_, const Range &range_, final_sum_type &body_, const Partitioner &partitioner_) | 
|   | 
| virtual  | ~task () | 
|   | Destructor.  More...
  | 
|   | 
| internal::allocate_continuation_proxy &  | allocate_continuation () | 
|   | Returns proxy for overloaded new that allocates a continuation task of *this.  More...
  | 
|   | 
| internal::allocate_child_proxy &  | allocate_child () | 
|   | Returns proxy for overloaded new that allocates a child task of *this.  More...
  | 
|   | 
| void  | recycle_as_continuation () | 
|   | Change this to be a continuation of its former self.  More...
  | 
|   | 
| void  | recycle_as_safe_continuation () | 
|   | Recommended to use, safe variant of recycle_as_continuation.  More...
  | 
|   | 
| void  | recycle_as_child_of (task &new_parent) | 
|   | Change this to be a child of new_parent.  More...
  | 
|   | 
| void  | recycle_to_reexecute () | 
|   | Schedule this for reexecution after current execute() returns.  More...
  | 
|   | 
| void  | set_ref_count (int count) | 
|   | Set reference count.  More...
  | 
|   | 
| void  | increment_ref_count () | 
|   | Atomically increment reference count.  More...
  | 
|   | 
| int  | add_ref_count (int count) | 
|   | Atomically adds to reference count and returns its new value.  More...
  | 
|   | 
| int  | decrement_ref_count () | 
|   | Atomically decrement reference count and returns its new value.  More...
  | 
|   | 
| void  | spawn_and_wait_for_all (task &child) | 
|   | Similar to spawn followed by wait_for_all, but more efficient.  More...
  | 
|   | 
| void __TBB_EXPORTED_METHOD  | spawn_and_wait_for_all (task_list &list) | 
|   | Similar to spawn followed by wait_for_all, but more efficient.  More...
  | 
|   | 
| void  | wait_for_all () | 
|   | Wait for reference count to become one, and set reference count to zero.  More...
  | 
|   | 
| task *  | parent () const | 
|   | task on whose behalf this task is working, or NULL if this is a root.  More...
  | 
|   | 
| void  | set_parent (task *p) | 
|   | sets parent task pointer to specified value  More...
  | 
|   | 
| task_group_context *  | context () | 
|   | This method is deprecated and will be removed in the future.  More...
  | 
|   | 
| task_group_context *  | group () | 
|   | Pointer to the task group descriptor.  More...
  | 
|   | 
| bool  | is_stolen_task () const | 
|   | True if task was stolen from the task pool of another thread.  More...
  | 
|   | 
| bool  | is_enqueued_task () const | 
|   | True if the task was enqueued.  More...
  | 
|   | 
| state_type  | state () const | 
|   | Current execution state.  More...
  | 
|   | 
| int  | ref_count () const | 
|   | The internal reference count.  More...
  | 
|   | 
| bool __TBB_EXPORTED_METHOD  | is_owned_by_current_thread () const | 
|   | Obsolete, and only retained for the sake of backward compatibility. Always returns true.  More...
  | 
|   | 
| void  | set_affinity (affinity_id id) | 
|   | Set affinity for this task.  More...
  | 
|   | 
| affinity_id  | affinity () const | 
|   | Current affinity of this task.  More...
  | 
|   | 
| virtual void __TBB_EXPORTED_METHOD  | note_affinity (affinity_id id) | 
|   | Invoked by scheduler to notify task that it ran on unexpected thread.  More...
  | 
|   | 
| void __TBB_EXPORTED_METHOD  | change_group (task_group_context &ctx) | 
|   | Moves this task from its current group into another one.  More...
  | 
|   | 
| bool  | cancel_group_execution () | 
|   | Initiates cancellation of all tasks in this cancellation group and its subordinate groups.  More...
  | 
|   | 
| bool  | is_cancelled () const | 
|   | Returns true if the context has received cancellation request.  More...
  | 
|   | 
| __TBB_DEPRECATED void  | set_group_priority (priority_t p) | 
|   | Changes priority of the task group this task belongs to.  More...
  | 
|   | 
| __TBB_DEPRECATED priority_t  | group_priority () const | 
|   | Retrieves current priority of the task group this task belongs to.  More...
  | 
|   | 
template<typename Range, typename Body, typename Partitioner = simple_partitioner>
class tbb::internal::start_scan< Range, Body, Partitioner >
Initial task to split the work. 
Definition at line 186 of file parallel_scan.h.
 
template<typename Range , typename Body , typename Partitioner > 
 
Should be overridden by derived classes. 
Implements tbb::task.
Definition at line 254 of file parallel_scan.h.
  255         typedef internal::finish_scan<Range,Body> finish_pass1_type;
   261         if( treat_as_stolen ) {
   266         task* next_task = NULL;
   284             b.my_is_right_child = 
true;
   291             my_sum = &result->my_left_sum;
 
sum_node< Range, Body > sum_node_type
 
static internal::allocate_root_proxy allocate_root()
Returns proxy for overloaded new that allocates a root task.
 
task()
Default constructor.
 
void const char const char int ITT_FORMAT __itt_group_sync p
 
internal::allocate_continuation_proxy & allocate_continuation()
Returns proxy for overloaded new that allocates a continuation task of *this.
 
void recycle_as_child_of(task &new_parent)
Change this to be a child of new_parent.
 
sum_node_type ** my_return_slot
 
Partitioner::partition_type my_partition
 
start_scan(sum_node_type *&return_slot_, start_scan &parent_, sum_node_type *parent_sum_)
 
bool is_stolen_task() const
True if task was stolen from the task pool of another thread.
 
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
 
task * parent() const
task on whose behalf this task is working, or NULL if this is a root.
 
sum_node_type * my_parent_sum
 
final_sum< Range, Body > final_sum_type
 
 
References __TBB_ASSERT, tbb::task::allocate_root(), tbb::internal::start_scan< Range, Body, Partitioner >::my_is_right_child, tbb::internal::sum_node< Range, Body >::my_left, tbb::internal::sum_node< Range, Body >::my_left_sum, tbb::internal::sum_node< Range, Body >::my_right, p, and parent.
 
 
template<typename Range , typename Body , typename Partitioner  = simple_partitioner> 
 
Definition at line 227 of file parallel_scan.h.
  228             if( !range_.empty() ) {
   229                 typedef internal::start_scan<Range,Body,Partitioner> start_pass1_type;
   230                 internal::sum_node<Range,Body>* root = NULL;
   237                 temp_body->my_body.reverse_join(body_);
   240                     root->my_body = temp_body;
   241                     root->my_incoming = NULL;
   242                     root->my_stuff_last = &body_;
   245                     body_.assign(temp_body->my_body);
   246                     temp_body->finish_construction( range_, NULL );
   247                     temp_body->destroy(*temp_body);
 static internal::allocate_root_proxy allocate_root()
Returns proxy for overloaded new that allocates a root task.
 
static void spawn_root_and_wait(task &root)
Spawn task allocated by allocate_root, wait for it to complete, and deallocate it.
 
final_sum< Range, Body > final_sum_type
 
 
References tbb::task::allocate_root(), tbb::internal::final_sum< Range, Body >::finish_construction(), tbb::internal::final_sum< Range, Body >::my_body, tbb::internal::sum_node< Range, Body >::my_body, tbb::internal::sum_node< Range, Body >::my_incoming, tbb::internal::sum_node< Range, Body >::my_stuff_last, and tbb::task::spawn_root_and_wait().
Referenced by tbb::parallel_scan().