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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per