プロジェクトのスレッド モデルの指定 (ATL)
ATL プロジェクトのスレッドモデルを指定する目的で次のマクロを使用できます。
マクロ | 使用ガイドライン |
---|---|
_ATL_SINGLE_THREADED | すべてのオブジェクトで単一のスレッド モデルを使用するかどうかを定義します。 |
_ATL_APARTMENT_THREADED | 1 つ以上のオブジェクトでアパートメント スレッドが使用されているかどうかを定義します。 |
_ATL_FREE_THREADED | 1 つ以上のオブジェクトでフリー スレッドまたはニュートラル スレッドが使用されているかどうかを定義します。 既存のコードには同等のマクロ _ATL_MULTI_THREADED の参照が含まれていることがあります。 |
プロジェクトにこれらのマクロを定義しない場合、_ATL_FREE_THREADED が有効になります。
マクロは次のように実行時パフォーマンスに影響を与えます。
プロジェクトに含まれるオブジェクトに対応するマクロを指定すると、実行時パフォーマンスに影響が出ることがあります。
上位のマクロを指定すると、たとえば、すべてのオブジェクトがシングル スレッドのときに _ATL_APARTMENT_THREADED を指定すると、実行時パフォーマンスが若干低下します。
下位のマクロを指定すると、たとえば、1 つまたは複数のオブジェクトでアパートメント スレッドまたはフリー スレッドが使用されるときに _ATL_SINGLE_THREADED を指定すると、実行時にアプリケーションが失敗することがあります。
ATL オブジェクトで利用できるスレッド モデルの説明については、「オプション、ATL シンプル オブジェクト ウィザード」を参照してください。