global_control

[scheduler.global_control]

oneTBB ダイナミック・ライブラリーの特定の設定や動作を制御するために使用するクラスです。

global_control クラスのオブジェクト、または 『制御変数』 は oneTBB の動作やパラメーターに影響します。global_control クラスは、主にアプリケーション・レベルでアプリケーション全体の動作を制御するために使用することを目的としています。

変更可能な現在のパラメーター・セットは、global_control::parameter 列挙子によって定義されます。パラメーターとその値は、制御変数のコンストラクターの引数として指定されます。制御変数の存在期間が終了すると、その効力も失われます。

制御変数は異なるスレッドで作成することができ、入れ子やオーバーラップするスコープを持つことができます。ただし、各制御パラメーターの処理全体に適用されるアクティブな値は常に 1 つだけです。この値はパラメーター固有の選択規則に従って、現存のすべての制御変数から選択されます。


// <oneapi/tbb/global_control.h> ヘッダーで定義 
namespace oneapi { 
namespace tbb { 
    class global_control { 
    public: 
        enum parameter { 
            max_allowed_parallelism, 
            thread_stack_size, 
            terminate_on_exception 
        }; 

        global_control(parameter p, size_t value); 
        ~global_control(); 

        static size_t active_value(parameter param); 
    }; 
} // namespace tbb 
} // namespace oneapi

メンバーのタイプと定数

enum parameter::max_allowed_parallelism

Selection rule: minimum

タスク・スケジューラーにおいてアクティブなワーカースレッドの合計数を parameter_value - 1 に制限します。

max_allowed_parallelism1 に設定すると、global_control はアプリケーション・スレッドによるすべてのタスクのシリアル実行を強制します。これは、ワーカースレッドの実行が許可されないことを意味します。ただし 1 つの例外があり、複数のタスクが task_arena::enqueue によって送信された場合でも、max_allowed_parallelism の制限を無視して単一のワーカースレッドで実行されます。

enum parameter::thread_stack_size

選択規則: 最大

ライブラリーで作成されたワーカースレッドのスタックサイズを設定します。

enum parameter::terminate_on_exception

選択規則: 論理和

パラメーターを 1 に設定すると、例外をスローまたは再スローする条件で終了します。0 (デフォルト) の場合、パラメーターは実装の動作に影響しません。

メンバー関数

global_control(parameter param, size_t value)

指定されたパラメーターと値で global_control オブジェクトを構築します。

~global_control()

制御変数オブジェクトを破棄して終了します。

static size_t active_value(parameter param)

param で定義された設定の現在アクティブな値を返します。

参照: