Specifying the Threading Model for a Project (ATL)

 

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

For the latest documentation on Visual Studio 2017, see Specifying the Threading Model for a Project (ATL) on docs.microsoft.com. The following macros are available to specify the threading model of an ATL project:

MacroGuidelines for using
_ATL_SINGLE_THREADEDDefine if all of your objects use the single threading model.
_ATL_APARTMENT_THREADEDDefine if one or more of your objects use apartment threading.
_ATL_FREE_THREADEDDefine 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.

Concepts

Show: