Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

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

 

 

Show:
© 2017 Microsoft