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.
Avvio
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à.