programacion lenguaje informatica historia full embarcadero creadores borland delphi com delphi-7

lenguaje - delphi wikipedia



Diferencia de Coinitialize(nil) y CoInitializeEx(0, COINIT_MULTITHREADED) (1)

El primero inicializa COM de una manera que pone el hilo de llamada en su propio apartamento de subproceso único (STA). Este último inicializa COM de una manera que coloca el hilo de llamada en un apartamento compartido de subprocesos múltiples (MTA). Los dos apartamentos tienen una semántica muy diferente, especialmente en cómo se accede a los objetos COM a través de los límites de los hilos. Los subprocesos en diferentes apartamentos deben usar proxies para compartir objetos COM, pero COM proporciona sincronización para usted (a través de colas de mensajes por subproceso). Los subprocesos en el mismo departamento pueden compartir objetos COM sin usar proxies, pero deben sincronizarse manualmente, como con secciones críticas o mutexes.

Entonces sí, hay una diferencia y puede ser muy significativo. Lea la documentación en MSDN, es muy detallado.

Función CoInitialize

Función CoInitializeEx

Procesos, hilos y apartamentos

en un hilo, ¿hay alguna diferencia si uso

Coinitialize(nil)

en lugar de

CoInitializeEx(0, COINIT_MULTITHREADED);

Yo uso Delphi 7 pero supongo que la pregunta puede permanecer para otros lenguajes de programación Gracias por su ayuda.