/GT (スレッド ローカル ストレージを使用したファイバー保護のサポート)

静的スレッド ローカル ストレージを使用して割り当てられたデータ (つまり、__declspec(thread) を使用して割り当てられたデータ) に対して、ファイバー保護をサポートします。

構文

/GT

解説

__declspec(thread) で宣言されたデータは、スレッド ローカル ストレージ (TLS) 配列を通じて参照されます。 TLS 配列は、システムが各スレッドに対して保持するアドレスの配列です。 この配列内の各アドレスによって、スレッド ローカル ストレージ データの場所が指定されます。

ファイバーは、スタックとレジスタ コンテキストで構成される軽量オブジェクトであり、さまざまなスレッドでスケジュールできます。 ファイバーは任意のスレッドで実行できます。 ファイバーはスワップアウトされ、後で別のスレッドで再起動される可能性があるため、コンパイラでは TLS 配列のアドレスをキャッシュしない必要があります。または、関数呼び出し全体で共通の部分式として最適化します。 /GT は、このような最適化を防止します。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[C/C++]>[最適化] プロパティ ページを選択します。

  3. [ファイバー保護の最適化] プロパティを変更します。

このコンパイラ オプションをコードから設定するには

関連項目

MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文