Comunicação Single-Threaded e Multithreaded

Um cliente ou servidor que ofereça suporte a 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 empacotados 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 por COM. As chamadas para objetos no apartamento multithreaded não serão sincronizadas por 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 apartamento se aplicam à 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 Problemas de threading no servidor em processo.

 

Acessando interfaces entre apartamentos

Escolhendo o modelo de threading

Apartamentos Multithreaded

Problemas de threading do servidor em processo

Processos, threads e apartamentos

Apartamentos Single-Threaded