Condividi tramite


Archetipo Worker

Le classi conformi all'archetipo di lavoro forniscono il codice per elaborare gli elementi di lavoro accodati in un pool di thread.

Implementazione

Per implementare una classe conforme a questo archetipo, la classe deve fornire le funzionalità seguenti:

Metodo Descrizione
Initialize Chiamato per inizializzare l'oggetto worker prima che le richieste vengano passate a Execute.
Eseguire Chiamato per elaborare un elemento di lavoro.
Terminate. Chiamato per annullare l'inizializzazione dell'oggetto worker dopo che tutte le richieste sono state passate a Execute.
Typedef Descrizione
Requesttype Typedef per il tipo di elemento di lavoro che può essere elaborato dalla classe di lavoro.

Una tipica classe di lavoro ha un aspetto simile al seguente:

class CMyWorker
{
public:
   typedef MyRequestType RequestType;

   BOOL Initialize(void* pvWorkerParam);

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

   void Terminate(void* pvWorkerParam);
};

Implementazioni esistenti

Queste classi sono conformi a questo archetipo:

Classe Descrizione
CNonStatelessWorker Riceve le richieste dal pool di thread e le passa a un oggetto di lavoro creato e eliminato definitivamente per ogni richiesta.

Uso

Questi parametri del modello prevedono che la classe sia conforme a questo archetipo:

Nome parametro Usato da
Lavoratore CThreadPool
Lavoratore CNonStatelessWorker

Requisiti

Intestazione: atlutil.h

WorkerArchetype::Execute

Chiamato per elaborare un elemento di lavoro.

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

Parametri

request
Elemento di lavoro da elaborare. L'elemento di lavoro è dello stesso tipo di RequestType.

pvWorkerParam
Parametro personalizzato riconosciuto dalla classe di lavoro. Passato anche a WorkerArchetype::Initialize e Terminate.

pOverlapped
Puntatore alla struttura OVERLAPPED utilizzata per creare la coda in cui sono stati accodati gli elementi di lavoro.

WorkerArchetype::Initialize

Chiamato per inizializzare l'oggetto worker prima che le richieste vengano passate a WorkerArchetype::Execute.

BOOL Initialize(void* pvParam) throw();

Parametri

pvParam
Parametro personalizzato riconosciuto dalla classe di lavoro. Passato anche a WorkerArchetype::Terminate e WorkerArchetype::Execute.

Valore restituito

Restituisce TRUE in caso di esito positivo, FAL edizione Standard in caso di errore.

WorkerArchetype::RequestType

Typedef per il tipo di elemento di lavoro che può essere elaborato dalla classe di lavoro.

typedef MyRequestType RequestType;

Osservazioni:

Questo tipo deve essere usato come primo parametro di WorkerArchetype::Execute e deve essere in grado di eseguire il cast da e verso un ULONG_PTR.

WorkerArchetype::Terminate

Chiamato per annullare l'inizializzazione dell'oggetto worker dopo che tutte le richieste sono state passate a WorkerArchetype::Execute.

void Terminate(void* pvParam) throw();

Parametri

pvParam
Parametro personalizzato riconosciuto dalla classe di lavoro. Passato anche a WorkerArchetype::Initialize e WorkerArchetype::Execute.

Vedi anche

Concetti
Componenti Desktop COM ATL