Enumeración COINIT (objbase.h)
Determina el modelo de simultaneidad usado para las llamadas entrantes a objetos creados por este subproceso. Este modelo de simultaneidad puede ser subproceso de apartamento o multiproceso.
Syntax
typedef enum tagCOINIT {
COINIT_APARTMENTTHREADED = 0x2,
COINIT_MULTITHREADED = 0x0,
COINIT_DISABLE_OLE1DDE = 0x4,
COINIT_SPEED_OVER_MEMORY = 0x8
} COINIT;
Constantes
COINIT_APARTMENTTHREADED Valor: 0x2 Inicializa el subproceso para la simultaneidad de objetos de subproceso de apartamento (vea Comentarios). |
COINIT_MULTITHREADED Valor: 0x0 Inicializa el subproceso para la simultaneidad de objetos multiproceso (vea Comentarios). |
COINIT_DISABLE_OLE1DDE Valor: 0x4 Deshabilita la compatibilidad con DDE para OLE1. |
COINIT_SPEED_OVER_MEMORY Valor: 0x8 Aumente el uso de memoria en un intento de aumentar el rendimiento. |
Comentarios
Cuando se inicializa un subproceso a través de una llamada a CoInitializeEx, se elige si se inicializa como subproceso de apartamento o multiproceso mediante la designación de uno de los miembros de COINIT como segundo parámetro. Esto designa cómo se controlan las llamadas entrantes a cualquier objeto creado por ese subproceso, es decir, la simultaneidad del objeto.
Subprocesos de apartamento, al tiempo que permite varios subprocesos de ejecución, serializa todas las llamadas entrantes al requerir que las llamadas a métodos de objetos creados por este subproceso siempre se ejecuten en el mismo subproceso, es decir, el apartamento o subproceso que los creó. Además, las llamadas solo pueden llegar a los límites de la cola de mensajes. Debido a esta serialización, normalmente no es necesario escribir el control de simultaneidad en el código del objeto, aparte de evitar llamadas a PeekMessage y SendMessage durante el procesamiento que no deben interrumpir otras invocaciones de método o llamadas a otros objetos en el mismo apartamento o subproceso.
El subproceso múltiple (también denominado subproceso libre) permite llamar a métodos de objetos creados por este subproceso para ejecutarse en cualquier subproceso. No hay ninguna serialización de llamadas, es decir, muchas llamadas pueden producirse en el mismo método o en el mismo objeto o simultáneamente. La simultaneidad de objetos multiproceso ofrece el máximo rendimiento y aprovecha la mejor ventaja del hardware de varios procesadores para las llamadas entre subprocesos, entre procesos y entre equipos, ya que las llamadas a objetos no se serializan de ninguna manera. Sin embargo, esto significa que el código de los objetos debe aplicar su propio modelo de simultaneidad, normalmente mediante el uso de primitivos de sincronización, como secciones críticas, semáforos o exclusión mutua. Además, dado que el objeto no controla la duración de los subprocesos a los que accede, no se puede almacenar ningún estado específico del subproceso en el objeto (en Almacenamiento local de subprocesos).
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado | objbase.h |
Consulte también
IInitializeSpy::P ostInitialize