|
| | 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().