Modelos de subprocesos COM+
Los modelos de subprocesos COM+ están diseñados en torno a una colección de objetos denominada apartamento. Un apartamento es una colección de contextos contenidos en un proceso, como se muestra en la ilustración siguiente.
Las llamadas dentro de un apartamento son directas, mientras que las llamadas entre apartamentos (fuera de proceso) son indirectas y requieren proxy y código auxiliar. Los apartamentos permiten objetos con diferentes propiedades de sincronización y reentrada y tienen dos categorías: uniproceso y multiproceso. Los objetos de un contenedor uniproceso (STA) se ejecutan en el subproceso determinado en el que se crearon. Las SA permiten que solo se ejecute un método a la vez. Están diseñados para interfaces de usuario y dependen de la cola de mensajes de Microsoft Windows para procesar las llamadas entrantes.
Los objetos de un apartamento multiproceso (MTA) se ejecutan en cualquier subproceso y permiten que se produzcan simultáneamente cualquier número de métodos. Los MTA admiten la reentrancia implícitamente.
Las clases COM+ se marcan con una propiedad ThreadingModel que permite a COM+ crear el objeto en el apartamento adecuado. Para determinar en qué apartamento se crea un objeto, CoCreateInstance usa la propiedad ThreadingModel .
Los subprocesos deben llamar a CoInitializeEx para poder usar COM+. Esto los crea dentro del apartamento y el contexto correctos. El contenedor de subprocesos principal se determina como el primer STA llamado por CoInitializeEx. Esto suele asociarse con el subproceso principal de un proceso. CoInitializeEx indica el tipo de apartamento requerido por el subproceso estableciendo las marcas siguientes:
- COINIT_MULTITHREADED: busca el subproceso en el único apartamento multiproceso.
- COINIT_APARTMENTTHREADED: coloca el subproceso en un nuevo STA.
En los temas siguientes de esta sección se proporciona más información sobre el uso de modelos de subprocesos y apartamentos en COM+:
Temas relacionados