Tipi di thread del distributore di risorse COM+
Le chiamate a un distributore di risorse COM+ possono avere origine in uno dei tipi di thread seguenti:
- Thread apartment (STA)
- Thread libero (MTA)
- Thread non COM (applicazione o thread garbage collector manager )
Se un distributore di risorse non è un oggetto COM, deve essere in grado di gestire le chiamate in arrivo da qualsiasi thread in qualsiasi momento. Se un distributore di risorse è un oggetto COM, l'oggetto COM deve essere registrato con un modello di threading di Both. In questo modo, i thread STA o MTA possono creare e usare il distributore di risorse senza un commutatore di thread.
Se un distributore di risorse crea e usa un altro oggetto COM (ad esempio, un gestore risorse out-of-process), il distributore di risorse potrebbe dover mantenere più proxy a questo altro oggetto COM e assicurarsi che le chiamate all'oggetto vengano effettuate usando il proxy appropriato per il thread chiamante. Quando il distributore di risorse crea questo oggetto, esegue il marshalling e salva il riferimento. Prima di chiamare di nuovo l'oggetto, è necessario annullare ilmarshal per creare un proxy per il thread chiamante.
Potrebbe essere più efficiente memorizzare nella cache questi proxy per thread mantenendo una mappa dall'ID del thread a un puntatore proxy. Questa mappa si espande man mano che vengono usati nuovi thread nel processo.
Argomenti correlati