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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de