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. 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. NoteTasks 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. |