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 | Sovraccarico. Costruisce un agente. |
| ~Distruttore agente | Distrugge l'agente. |
Metodi pubblici
| Nome | Descrizione |
|---|---|
| cancel | Sposta un agente dallo stato agent_created o agent_runnable allo stato agent_canceled. |
| start | Sposta un agente dallo stato agent_created allo stato agent_runnable e lo pianifica per 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 stato agent_done, a indicare che l'agente ha completato il proprio compito. |
| eseguire | 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 utilizzato è implicito nel 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:
È un errore distruggere un agente che non si trova in uno stato terminale (sia agent_done che agent_canceled). Questa operazione può essere evitata attendendo che l'agente raggiunga uno stato terminale nel distruttore di una classe che eredita dalla classe agent.
annulla
Sposta un agente dallo stato agent_created o agent_runnable allo stato agent_canceled.
bool cancel();
Valore restituito
true se l'agente è stato cancellato, false in caso contrario. Non è possibile annullare un agente se è già stato avviato o è già stato terminato.
Operazione completata
Sposta un agente nello stato agent_done, a indicare che l'agente ha completato il proprio compito.
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 metodo run, quando sai che l'esecuzione del tuo agente è completata.
eseguire
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 poco prima che questo metodo venga richiamato. Il metodo deve invocare done sull'agente con uno stato appropriato prima di restituire, e non deve generare alcuna eccezione.
Avvio
Sposta un agente dallo stato agent_created allo stato agent_runnable e lo pianifica per 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.
stato_porta
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.
attendere
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
Stato agent_status dell'agente al termine dell'attesa. Può essere agent_canceled o agent_done.
Osservazioni:
Un'attività agente viene completata quando l'agente entra negli stati agent_canceled 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 entra nello stato agent_canceled o nello stato 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 agent presenti nell'array _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à di un agente viene completata quando l'agente raggiunge gli stati agent_canceled 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à.