タスクのコンテキスト

次の表のメソッドは、タスク・オブジェクト間、およびタスク・オブジェクトと物理スレッドの関係を示しています。

メンバー 説明
static task& self()

戻り値: 呼び出しスレッドが実行している最も内側のタスクへの参照。その execute()、note_affinity() メソッド、またはデストラクターが実行している場合、タスクは実行中であると見なされます。呼び出しスレッドが、タスクを実行していないユーザー作成スレッドの場合、self() はスレッドと関連付けられた暗黙的なダミータスクへの参照を返します。

task* parent() const

戻り値: successor 属性の値。タスクが allocate_root によって割り当てられ、spawn_root_and_wait の制御下で実行されている場合、結果は未定義値です。

void set_parent(task* p)

要件: p == NULL を除いて、両方のタスクが同じタスクグループであること。例えば、task t, t.group() == p->group()

効果: 親タスクのポインターを、指定された値 p に設定します。

bool is_stolen_task() const

戻り値: タスクを作成したスレッドとは異なるスレッドでタスクが実行されている場合は true

task::enqueue() でキューに入れられたタスクはスチールとしてレポートされません。

task_group_context* group()

戻り値: このタスクが属する、タスクグループのディスクリプター。

void change_group( task_group_context& ctx )

タスクを現在のタスクグループから ctx 引数で指定されたタスクグループに移動します。