次の方法で共有


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

更新 : 2007 年 11 月

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

/GT

解説

__declspec(thread) を使って宣言されたデータは、スレッド ローカル ストレージ (TLS: Thread-Local Storage) の配列を通じて参照されます。TLS 配列とは、スレッドごとにシステムで維持されるアドレスの配列です。この配列の各アドレスは、スレッド ローカル ストレージのデータ位置を示します。

ファイバは、軽量オブジェクトです。スタックとレジスタのコンテキストから構成され、さまざまなスレッドでスケジュールできます。ファイバは、どのスレッドでも動作可能です。ファイバはスワップ アウト後に別のスレッドで再起動されることがあるため、関数呼び出しにわたる共通の部分式として TLS 配列のアドレスをキャッシュしたり最適化したりしないでください。詳細については、「/Og (グローバルの最適化) オプション」に関するトピックを参照してください。/GT は、このような最適化を抑止します。

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

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。

  2. [C/C++] フォルダをクリックします。

  3. [最適化] プロパティ ページをクリックします。

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

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

参照

参照

コンパイラ オプション

コンパイラ オプションの設定