Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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à.