Partilhar via


Comunicação Single-Threaded e Multithreaded

Um cliente ou servidor que suporte apartamentos single-threaded e multithreaded terá um apartamento multithreaded, contendo todos os threads inicializados como free-threaded, e um ou mais apartamentos single-threaded. Os ponteiros de interface devem ser combinados entre apartamentos, mas podem ser usados sem marshaling dentro de um apartamento. As chamadas para objetos em um apartamento de thread único serão sincronizadas pelo COM. As chamadas para objetos no apartamento multithreaded não serão sincronizadas pelo COM.

Todas as informações sobre apartamentos single-threaded se aplicam aos threads marcados como modelo de apartamento, e todas as informações sobre apartamentos multithreaded se aplicam a todos os threads marcados como free-threaded. As regras de threading de apartamentos aplicam-se à comunicação entre apartamentos, exigindo que os ponteiros de interface sejam empacotados entre apartamentos com chamadas para CoMarshalInterThreadInterfaceInStream e CoGetInterfaceAndReleaseStream, conforme descrito em Single-Threaded Apartments.

Observação

Algumas considerações especiais se aplicam ao lidar com servidores em processo. Para obter mais informações, consulte In-Process Server Threading Issues.

 

Acesso a interfaces entre apartamentos

Escolhendo o modelo de threading

Apartamentos Multithreaded

Problemas de threading do In-Process Server

Processos, Threads e Apartamentos

Single-Threaded Apartments