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