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_contextisolated されます。

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 の特性を返します。