プロジェクトのスレッド モデルの指定

以下のマクロは、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 シンプル オブジェクト ウィザード)」を参照してください。

参照

その他の技術情報

ATL の概念