Specifying the Threading Model for a Project (ATL)

The following macros are available to specify the threading model of an ATL project:

Macro Guidelines for using
_ATL_SINGLE_THREADED Define if all of your objects use the single threading model.
_ATL_APARTMENT_THREADED Define if one or more of your objects use apartment threading.
_ATL_FREE_THREADED Define if one or more of your objects use free or neutral threading. Existing code may contain references to the equivalent macro _ATL_MULTI_THREADED.

If you do not define any of these macros for your project, _ATL_FREE_THREADED will be in effect.

The macros affect run-time performance as follows:

  • Specifying the macro that corresponds to the objects in your project can improve run-time performance.

  • Specifying a higher level of macro, for example if you specify _ATL_APARTMENT_THREADED when all of your objects are single threaded, will slightly degrade run-time performance.

  • Specifying a lower level of macro, for example, if you specify _ATL_SINGLE_THREADED when one or more of your objects use apartment threading or free threading, can cause your application to fail at run time.

See Options, ATL Simple Object Wizard for a description of the threading models available for an ATL object.

See also

Concepts