Cómo implementar un modelo de apartamento agrupadas en el subproceso servidor COM en ATL

Seleccione idioma Seleccione idioma
Id. de artículo: 244495 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Microsoft Active Template Library (ATL) le permite definir un grupo de subprocesos STA en un ATL fuera de proceso de servidor con cada objeto creado que se ejecuta en su propio subproceso. Los pasos de la sección "Más información" de este artículo muestra cómo hacerlo.

Más información

Los siguientes pasos son necesarios para crear objetos fuera de un grupo de subprocesos:
  1. Derive la clase CExeModule o CServiceModule desde:
    CComAutoThreadModule<>
    					
    CExeModule : public CComAutoThreadModule<>
    					
  2. Declarar DECLARE_CLASSFACTORY_AUTO_THREAD() en cada clase ATL que se puede ejecutar en un grupo de subprocesos STA
  3. Declarar DECLARE_NOT_AGGREGATABLE() en cada clase ATL que se puede ejecutar en un grupo de subprocesos STA
    DECLARE_NOT_AGGREGATABLE(CMyPooledObject)
    					
  4. Cambiar el método CExeModule::Unlock() o CServiceModule::Unlock() para llamar al módulo:
    CComAutoThreadModule<>::Unlock()
    						
    LONG CExeModule::Unlock()
    {
       LONG l = CComAutoThreadModule<>::Unlock();
       if (l == 0)
       {
         bActivity = true;
         SetEvent(hEventShutdown); // tell monitor that we transitioned to zero
       }
       return l;
    }
    						
Si es que se hace esto para un servicio, deberá realizar un paso más. Cambie el código siguiente desde:
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid)
{
   CComModule::Init(p, h, plibid);
				
a:
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid)
{
   CComAutoThreadModule<>::Init(p, h, plibid);
				
forma predeterminada, ATL crea un grupo de cuatro subprocesos por procesador. Puede cambiar esto en la llamada _Module.Init() en la llamada de función tWinMain() especificando el número de subprocesos en la opcional sucesivamente parámetro. De forma predeterminada, CComAutoThreadModule utiliza CComSimpleThreadAllocator como el asignador de subproceso. CComSimpleThreadAllocator utiliza un esquema por turnos simple para crear objetos en el grupo de subprocesos.

Referencias

Para obtener más información consulta DECLARE_CLASS_FACTORY_AUTO_THREAD() CComAutoThreadModule y Microsoft Developer Network (MSDN).

Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
202128REVISIÓN: El servidor de ATL EXE según CComAutoThreadModule puede bloquearse en el registro

Propiedades

Id. de artículo: 244495 - Última revisión: jueves, 26 de mayo de 2005 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft ActiveX Template Library 3.0 sobre las siguientes plataformas
    • Microsoft Visual C++ 6.0 Enterprise
    • Microsoft Visual C++ 6.0 Professional
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
Palabras clave: 
kbmt kbarchitecture kbhowto kblocalsvr kbservice kbthread KB244495 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 244495

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com