task Context


This feature is deprecated and will be removed in the future.

The methods detailed in the following table expose relationships between task objects, and between task objects and the underlying physical threads.

Member Description
static task& self()

Returns: Reference to innermost task that the calling thread is running. A task is considered running if its methods execute(), note_affinity(), or destructor are running. If the calling thread is a user-created thread that is not running any task, self() returns a reference to an implicit dummy task associated with the thread.

task* parent() const

Returns: Value of the attribute successor. The result is an undefined value if the task was allocated by allocate_root and is currently running under control of spawn_root_and_wait.

void set_parent(task* p)

Requirements: Both tasks must be in the same task group except for p == NULL. For example, for task t, t.group() == p->group()

Effects: Sets parent task pointer to specified value p.

bool is_stolen_task() const

Returns: true if task is running on a thread different than the thread that spawned it.


Tasks enqueued with task::enqueue() are never reported as stolen.

task_group_context* group()

Returns: Descriptor of the task group, which this task belongs to.

void change_group( task_group_context& ctx )

Moves the task from its current task group into the one specified by the ctx argument.

For more complete information about compiler optimizations, see our Optimization Notice.