Share via


Arquetipo de trabajo

Las clases que se ajustan al arquetipo de trabajo proporcionan el código para procesar los elementos de trabajo en cola en un grupo de subprocesos.

Implementación

Para implementar una clase que se ajuste a este arquetipo, la clase debe proporcionar las siguientes características:

Método Descripción
Initialize Se llama para inicializar el objeto de trabajo antes de que se pasen las solicitudes a Ejecutar.
Ejecutar Llamada para procesar un elemento de trabajo.
Terminate Se llama para anular la inicialización del objeto de trabajo después de pasar todas las solicitudes a Ejecutar.
Definición de tipo Descripción
RequestType Definición de tipos para el tipo de elemento de trabajo que puede procesar la clase de trabajo.

Una clase de trabajo típica es así:

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

   void Execute(MyRequestType request, void* pvWorkerParam, OVERLAPPED* pOverlapped);

   void Terminate(void* pvWorkerParam);
};

Implementaciones existentes

Estas clases se ajustan a este arquetipo:

Clase Descripción
CNonStatelessWorker Recibe solicitudes del grupo de subprocesos y las pasa a un objeto de trabajo que se crea y destruye con cada solicitud.

Usar

Estos parámetros de plantilla suponen que la clase se ajuste a este arquetipo:

Nombre de parámetro Usado por
Trabajador CThreadPool
Trabajador CNonStatelessWorker

Requisitos

Header: atlutil.h

WorkerArchetype::Execute

Llamada para procesar un elemento de trabajo.

void Execute(
    RequestType request,
    void* pvWorkerParam,
    OVERLAPPED* pOverlapped);

Parámetros

Solicitud
El elemento de trabajo que se va a procesar. El elemento de trabajo es del mismo tipo que RequestType.

pvWorkerParam
Un parámetro personalizado reconocido por la clase de trabajo. También se pasa a WorkerArchetype::Initialize y Terminate.

pOverlapped
Puntero a la estructura SUPERPUESTA utilizada para crear la cola en la que se han puesto los elementos de trabajo.

WorkerArchetype::Initialize

Se llama para inicializar el objeto de trabajo antes de que se pasen las solicitudes a WorkerArchetype::Execute.

BOOL Initialize(void* pvParam) throw();

Parámetros

pvParam
Un parámetro personalizado reconocido por la clase de trabajo. También se pasa a WorkerArchetype::Terminate y WorkerArchetype::Execute.

Valor devuelto

Devuelve TRUE si se ejecuta correctamente; de lo contrario, devuelve FALSE.

WorkerArchetype::RequestType

Definición de tipos para el tipo de elemento de trabajo que puede procesar la clase de trabajo.

typedef MyRequestType RequestType;

Comentarios

Este tipo debe usarse como primer parámetro de WorkerArchetype::Execute y debe ser capaz de convertirse a y desde un ULONG_PTR.

WorkerArchetype::Terminate

Se llama para anular la inicialización del objeto de trabajo después de pasar todas las solicitudes a WorkerArchetype::Execute).

void Terminate(void* pvParam) throw();

Parámetros

pvParam
Un parámetro personalizado reconocido por la clase de trabajo. También se pasa a WorkerArchetype::Initialize y WorkerArchetype::Execute.

Consulte también

Conceptos
Componentes de escritorio COM de ATL