global_control クラス

概要

インテル® スレッディング・ビルディング・ブロック (インテル® TBB) ダイナミック・ライブラリーの特定の設定や動作を制御するクラス。

ヘッダー

#define TBB_PREVIEW_GLOBAL_CONTROL 1
#include "tbb/global_control.h"
   

構文

class global_control;
   

説明

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

ライブラリーやプラグインでは、構成やパフォーマンスに広範な影響を及ぼすため、使用を避けるべきです。

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

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

グローバル制御パラメーター

パラメーター

選択規則

説明

max_allowed_parallelism

minimum

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

max_allowed_parallelism1 に設定すると、global_control はアプリケーション・スレッドですべてのタスクのシリアル実行を行います。つまり、タスク・スケジューラーはワーカースレッドを実行しません。例外: task::enqueue または task_arena::enqueue で実行に渡されたワークがある場合、単一ワーカースレッドは max_allowed_parallelism の制限を無視して実行されます。

thread_stack_size

maximum

ライブラリーによって作成されるスレッド (タスク・スケジューラーのワーカースレッドやスレッド・ラッパー・クラスによって制御されるスレッドを含む) のスタックサイズを設定します。

  • Windows® ストア・アプリケーションのスタックサイズは設定できません。
  • Windows® システムでは、スタックサイズは 4GB に制限されています。

サンプル

#include "tbb/parallel_for.h"
#include "tbb/task_scheduler_init.h"
#define TBB_PREVIEW_GLOBAL_CONTROL 1
#include "tbb/global_control.h"

using namespace tbb;

void foo()
{
    // 次のコードは最大 16 スレッドを使用可能
    task_scheduler_init tsi(16);
    parallel_for( . . . );
}

void bar()
{
    // 次のコードは最大 8 スレッドを使用可能
    task_scheduler_init tsi(8);
    parallel_for( . . . );
}
int main()
{
    {
        const size_t parallelism = task_scheduler_init::default_num_threads();
        // foo() と bar() を含むスコープの動的範囲でインテル® TBB が
        // 利用可能な並列処理を半分に減らす
        global_control c(global_control::max_allowed_parallelism, parallelism/2);
        foo();
        bar();
    } // 以前の並列処理制限に戻す


メンバー

namespace tbb {
    class global_control {
  public:
        enum parameter {
            max_allowed_parallelism,
            thread_stack_size
        };

        global_control(parameter p, size_t value);
       ~global_control();
        static size_t active_value(parameter param);
    };
} // tbb 名前空間

次の表は、このクラスのメンバーの詳細な情報を提供します。

メンバー 説明
static size_t active_value(parameter param);

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

関連情報