Single-Threaded and Multithreaded Communication

A client or server that supports both single-threaded and multithreaded apartments will have one multithreaded apartment, containing all threads initialized as free-threaded, and one or more single-threaded apartments. Interface pointers must be marshaled between apartments but can be used without marshaling within an apartment. Calls to objects in a single-threaded apartment will be synchronized by COM. Calls to objects in the multithreaded apartment will not be synchronized by COM.

All of the information on single-threaded apartments applies to the threads marked as apartment model, and all of the information on multithreaded apartments applies to all of the threads marked as free-threaded. Apartment threading rules apply to inter-apartment communication, requiring that interface pointers be marshaled between apartments with calls to CoMarshalInterThreadInterfaceInStream and CoGetInterfaceAndReleaseStream, as described in Single-Threaded Apartments.

Note   Some special considerations apply when dealing with in-process servers. For more information, see In-Process Server Threading Issues.

Related topics

Accessing Interfaces Across Apartments
Choosing the Threading Model
Multithreaded Apartments
In-Process Server Threading Issues
Processes, Threads, and Apartments
Single-Threaded Apartments

 

 

Community Additions

ADD
Show:
© 2014 Microsoft