task_group_context
[scheduler.task_group_context]
task_group_context
は、関連するタスクを実行するタスク・スケジューラーが使用するプロパティーを表現します。各タスクは、1 つの task_group_context
オブジェクトにのみ関連付けられます。
task_group_context
オブジェクトはツリー形式です。各ツリーのルートは、isolated
として構築される task_group_context
です。
task_group_context
は、ユーザーの要求によって明示的にキャンセルされるか、関連するタスクから例外がスローされたときに暗黙的にキャンセルされます。task_group_context
をキャンセルすると、そのルート下のツリー全体がキャンセルされます。
task_group_context
は、親 task_group_context
オブジェクトから継承された、または専用インターフェイスで取得された浮動小数点の設定を保持します。
// <oneapi/tbb/task_group.h> ヘッダーで定義
namespace oneapi {
namespace tbb {
class task_group_context {
public:
enum kind_t {
isolated = /* implementation-defined */,
bound = /* implementation-defined */
};
enum traits_type {
fp_settings = /* implementation-defined */,
default_traits = 0
};
task_group_context( kind_t relation_with_parent = bound,
uintptr_t traits = default_traits );
~task_group_context();
void reset();
bool cancel_group_execution();
bool is_group_execution_cancelled() const;
void capture_fp_settings();
uintptr_t traits() const;
};
} // namespace tbb;
} // namespace oneapi
メンバーのタイプと定数
- enum kind_t::isolated
特定のコンストラクターに渡されると、作成される
task_group_context
オブジェクトは親を持ちません。
- enum kind_t::bound
特定のコンストラクターに渡されると、作成された
task_group_context
オブジェクトは、task_group_context
に関連付けられた最初のタスクがスケジューラーに渡される時に、最内で実行されているタスクグループの子になります。現在のスレッドの最内に実行中のタスクがない場合、task_group_context
はisolated
されます。
- enum traits_type::fp_settings
特定のコンストラクターに渡されると、フラグはコンテキストに現在のスレッドから浮動小数点設定を取得するように強制します。
メンバー関数
- task_group_context(kind_t relation_to_parent = bound, uintptr_t traits = default_traits)
空の
task_group_context
を構築。
- ~task_group_context()
空の task_group_context を破棄します。この
task_group_context
に関連付けられたタスクが存在すると動作は未定義となります。
- bool cancel_group_execution()
この
task_group_context
に関連付けられたタスクを実行しないように要求します。task_group_context
がすでにキャンセルされている場合はfalse
を、それ以外はtrue
を返します。複数のスレッドから同時に呼び出された場合、1 つの呼び出しにはtrue
が返され、残りの呼び出しにはfalse
が返されます。
- bool is_group_execution_cancelled() const
この
task_group_context
がキャンセル要求を受け取っているとtrue
を返します。
- void reset()
この
task_group_context
がキャンセルされていない状態で再度初期化します。警告
このメソッドは、グループの下位グループと関連するすべてのタスクが完了した後に呼び出した場合のみ安全です。このメソッドは、複数のスレッドで同時に呼び出してはなりません。
- void capture_fp_settings()
現在のスレッドから浮動小数点設定を取得します。
警告
このメソッドは、グループの下位グループと関連するすべてのタスクが完了した後に呼び出した場合のみ安全です。このメソッドは、複数のスレッドで同時に呼び出してはなりません。
- uintptr_t traits() const
task_group_context
の特性を返します。