Comunicazione a thread singolo e multithreading

Un client o un server che supporta sia appartamenti a thread singolo che multithreading avranno un appartamento multithreading, contenente tutti i thread inizializzati come thread libero e uno o più appartamenti a thread singolo. I puntatori di interfaccia devono essere sottoposto a marshalling tra appartamenti, ma possono essere utilizzati senza effettuare il marshalling all'interno di un appartamento. Le chiamate agli oggetti in un apartment a thread singolo verranno sincronizzate da COM. Le chiamate agli oggetti nell'apartment multithreading non verranno sincronizzate da COM.

Tutte le informazioni sugli appartamenti a thread singolo si applicano ai thread contrassegnati come modello apartment e tutte le informazioni sugli appartamenti multithreading si applicano a tutti i thread contrassegnati come a thread libero. Le regole di threading apartment si applicano alla comunicazione tra apartment, richiedendo che i puntatori di interfaccia vengano sottoposto a marshalling tra appartamenti con chiamate a CoMarshalInterThreadInterfaceInStream e CoGetInterfaceAndReleaseStream, come descritto in Appartamenti a thread singolo.

Nota

Alcune considerazioni speciali si applicano quando si gestiscono i server in-process. Per altre informazioni, vedere Problemi di threading in-Process Server.

 

Accesso alle interfacce tra appartamenti

Scelta del modello di threading

Appartamenti multithreading

Problemi di threading del server in-process

Processi, thread e appartamenti

Appartamenti a thread singolo