Share via


Classe agent

Classe destinata a essere usata come classe di base per tutti gli agenti indipendenti. Consente di nascondere lo stato ad altri agenti e di interagire attraverso il passaggio di messaggi.

Sintassi

class agent;

Membri

Costruttori pubblici

Nome Descrizione
Agente Con overload. Costruisce un agente.
Distruttore ~agent Distrugge l'agente.

Metodi pubblici

Nome Descrizione
cancel Sposta un agente dallo agent_created stato o agent_runnable allo agent_canceled stato .
start Sposta un agente dallo agent_created stato allo agent_runnable stato e lo pianifica per l'esecuzione.
status Origine sincrona delle informazioni sullo stato dell'agente.
status_port Origine asincrona delle informazioni sullo stato dall'agente.
Aspettare Attende il completamento dell'attività da parte di un agente.
wait_for_all Attende che tutti gli agenti specificati completino le attività.
wait_for_one Attende il completamento dell'attività da parte di uno degli agenti specificati.

Metodi protetti

Nome Descrizione
done Sposta un agente nello agent_done stato, a indicare che l'agente è stato completato.
run Rappresenta l'attività principale di un agente. run deve essere sottoposto a override in una classe derivata e specifica le operazioni che l'agente deve eseguire dopo l'avvio.

Osservazioni:

Per altre informazioni, vedere Agenti asincroni.

Gerarchia di ereditarietà

agent

Requisiti

Intestazione: agents.h

Spazio dei nomi: Concurrency

agente

Costruisce un agente.

agent();

agent(Scheduler& _PScheduler);

agent(ScheduleGroup& _PGroup);

Parametri

_PScheduler
Oggetto Scheduler all'interno del quale è pianificata l'attività di esecuzione dell'agente.

_PGroup
Oggetto ScheduleGroup all'interno del quale è pianificata l'attività di esecuzione dell'agente. L'oggetto Scheduler usato è previsto dal gruppo di pianificazione.

Osservazioni:

Se non si specificano i parametri _PScheduler o _PGroup , il runtime usa l'utilità di pianificazione predefinita.

~Agente

Distrugge l'agente.

virtual ~agent();

Osservazioni:

Si tratta di un errore per eliminare definitivamente un agente che non si trova in uno stato terminale ( agent_done o agent_canceled). Questa operazione può essere evitata attendendo che l'agente raggiunga uno stato terminale nel distruttore di una classe che eredita dalla agent classe .

cancel

Sposta un agente dallo agent_created stato o agent_runnable allo agent_canceled stato .

bool cancel();

Valore restituito

true se l'agente è stato annullato, false in caso contrario. Non è possibile annullare un agente se è già stato avviato o è già stato completato.

Operazione completata

Sposta un agente nello agent_done stato, a indicare che l'agente è stato completato.

bool done();

Valore restituito

true se l'agente viene spostato nello agent_done stato, false in caso contrario. Non è possibile spostare un agente che è stato annullato nello agent_done stato .

Osservazioni:

Questo metodo deve essere chiamato alla fine del run metodo, quando si sa che l'esecuzione dell'agente è stata completata.

run

Rappresenta l'attività principale di un agente. run deve essere sottoposto a override in una classe derivata e specifica le operazioni che l'agente deve eseguire dopo l'avvio.

virtual void run() = 0;

Osservazioni:

Lo stato dell'agente viene modificato a agent_started destra prima che questo metodo venga richiamato. Il metodo deve richiamare done sull'agente con uno stato appropriato prima di restituire e potrebbe non generare eccezioni.

start

Sposta un agente dallo agent_created stato allo agent_runnable stato e lo pianifica per l'esecuzione.

bool start();

Valore restituito

true se l'agente è stato avviato correttamente, false in caso contrario. Non è possibile avviare un agente che è stato annullato.

stato

Origine sincrona delle informazioni sullo stato dell'agente.

agent_status status();

Valore restituito

Restituisce lo stato corrente dell'agente. Si noti che questo stato restituito potrebbe cambiare immediatamente dopo essere stato restituito.

status_port

Origine asincrona delle informazioni sullo stato dall'agente.

ISource<agent_status>* status_port();

Valore restituito

Restituisce un'origine messaggio che può inviare messaggi sullo stato corrente dell'agente.

wait

Attende il completamento dell'attività da parte di un agente.

static agent_status __cdecl wait(
    _Inout_ agent* _PAgent,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parametri

_PAgent
Puntatore all'agente da attendere.

_Timeout
Tempo massimo di attesa, espresso in millisecondi.

Valore restituito

Oggetto agent_status dell'agente al termine dell'attesa. Può essere agent_canceled o agent_done.

Osservazioni:

Un'attività agente viene completata quando l'agente immette gli agent_canceled stati o agent_done .

Se il parametro _Timeout ha un valore diverso dalla costante COOPERATIVE_TIMEOUT_INFINITE, l'eccezione operation_timed_out viene generata se la quantità di tempo specificata scade prima che l'agente abbia completato l'attività.

wait_for_all

Attende che tutti gli agenti specificati completino le attività.

static void __cdecl wait_for_all(
    size_t count,
    _In_reads_(count) agent** _PAgents,
    _Out_writes_opt_(count) agent_status* _PStatus = NULL,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parametri

count
Numero di puntatori dell'agente presenti nella matrice _PAgents.

_PAgents
Matrice di puntatori agli agenti da attendere.

_PStatus
Puntatore a una matrice di stati dell'agente. Ogni valore di stato rappresenta lo stato dell'agente corrispondente quando il metodo restituisce.

_Timeout
Tempo massimo di attesa, espresso in millisecondi.

Osservazioni:

Un'attività agente viene completata quando l'agente immette gli agent_canceled stati o agent_done .

Se il parametro _Timeout ha un valore diverso dalla costante COOPERATIVE_TIMEOUT_INFINITE, l'eccezione operation_timed_out viene generata se la quantità di tempo specificata scade prima che l'agente abbia completato l'attività.

wait_for_one

Attende il completamento dell'attività da parte di uno degli agenti specificati.

static void __cdecl wait_for_one(
    size_t count,
    _In_reads_(count) agent** _PAgents,
    agent_status& _Status,
    size_t& _Index,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parametri

count
Numero di puntatori dell'agente presenti nella matrice _PAgents.

_PAgents
Matrice di puntatori agli agenti da attendere.

_Stato
Riferimento a una variabile in cui verrà inserito lo stato dell'agente.

_Indice
Riferimento a una variabile in cui verrà inserito l'indice dell'agente.

_Timeout
Tempo massimo di attesa, espresso in millisecondi.

Osservazioni:

Un'attività agente viene completata quando l'agente immette gli agent_canceled stati o agent_done .

Se il parametro _Timeout ha un valore diverso dalla costante COOPERATIVE_TIMEOUT_INFINITE, l'eccezione operation_timed_out viene generata se la quantità di tempo specificata scade prima che l'agente abbia completato l'attività.

Vedi anche

Spazio dei nomi concurrency