agent — Klasa
Klasa przeznaczona do użycia jako klasa bazowa dla wszystkich niezależnych agentów. Służy do ukrywania stanu przed innymi agentami i interakcji z przekazywaniem komunikatów.
Składnia
class agent;
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
agent | Przeciążone. Tworzy agenta. |
~agent Destruktor | Niszczy agenta. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
Anuluj | Przenosi agenta ze agent_created stanów lub agent_runnable do agent_canceled stanu. |
start | Przenosi agenta agent_created ze stanu do agent_runnable stanu i planuje jego wykonanie. |
status | Synchroniczne źródło informacji o stanie agenta. |
status_port | Asynchroniczne źródło informacji o stanie agenta. |
czekać | Czeka na ukończenie zadania agenta. |
wait_for_all | Czeka na ukończenie zadań wszystkich określonych agentów. |
wait_for_one | Czeka na ukończenie zadania przez dowolnego z określonych agentów. |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
gotowy | Przenosi agenta agent_done do stanu wskazującego, że agent został ukończony. |
uruchom | Reprezentuje główne zadanie agenta. run należy przesłonić w klasie pochodnej i określa, co powinien zrobić agent po jego uruchomieniu. |
Uwagi
Aby uzyskać więcej informacji, zobacz Asynchroniczne agenty.
Hierarchia dziedziczenia
agent
Wymagania
Nagłówek: agents.h
Przestrzeń nazw: współbieżność
agent
Tworzy agenta.
agent();
agent(Scheduler& _PScheduler);
agent(ScheduleGroup& _PGroup);
Parametry
_PScheduler
Obiekt Scheduler
, w którym zaplanowano zadanie wykonywania agenta.
_PGroup
Obiekt ScheduleGroup
, w którym zaplanowano zadanie wykonywania agenta. Używany Scheduler
obiekt jest dorozumiany przez grupę harmonogramu.
Uwagi
Jeśli nie określisz parametrów lub_PGroup
, środowisko uruchomieniowe używa domyślnego _PScheduler
harmonogramu.
~agent
Niszczy agenta.
virtual ~agent();
Uwagi
Jest to błąd niszczenia agenta, który nie jest w stanie terminalu ( agent_done
lub agent_canceled
). Można tego uniknąć, czekając, aż agent osiągnie stan terminalu w destruktora klasy dziedziczonej agent
z klasy.
Anuluj
Przenosi agenta ze agent_created
stanów lub agent_runnable
do agent_canceled
stanu.
bool cancel();
Wartość zwracana
true
jeśli agent został anulowany, false
w przeciwnym razie. Nie można anulować agenta, jeśli został już uruchomiony lub został już ukończony.
Gotowe
Przenosi agenta agent_done
do stanu wskazującego, że agent został ukończony.
bool done();
Wartość zwracana
true
jeśli agent zostanie przeniesiony agent_done
do stanu, false
w przeciwnym razie. Nie można przenieść agenta, który został anulowany, do agent_done
stanu.
Uwagi
Ta metoda powinna być wywoływana na końcu run
metody, gdy wiadomo, że wykonanie agenta zostało zakończone.
uruchom
Reprezentuje główne zadanie agenta. run
należy przesłonić w klasie pochodnej i określa, co powinien zrobić agent po jego uruchomieniu.
virtual void run() = 0;
Uwagi
Stan agenta jest zmieniany bezpośrednio agent_started
przed wywołaniem tej metody. Metoda powinna wywołać done
agenta z odpowiednim stanem przed zwróceniem i może nie zgłaszać żadnych wyjątków.
start
Przenosi agenta agent_created
ze stanu do agent_runnable
stanu i planuje jego wykonanie.
bool start();
Wartość zwracana
true
jeśli agent został uruchomiony poprawnie, false
w przeciwnym razie. Nie można uruchomić agenta, który został anulowany.
status
Synchroniczne źródło informacji o stanie agenta.
agent_status status();
Wartość zwracana
Zwraca bieżący stan agenta. Należy pamiętać, że ten zwrócony stan może ulec zmianie natychmiast po powrocie.
status_port
Asynchroniczne źródło informacji o stanie agenta.
ISource<agent_status>* status_port();
Wartość zwracana
Zwraca źródło komunikatów, które może wysyłać komunikaty o bieżącym stanie agenta.
wait
Czeka na ukończenie zadania agenta.
static agent_status __cdecl wait(
_Inout_ agent* _PAgent,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parametry
_PAgent
Wskaźnik do agenta do oczekiwania.
_Limit czasu
Maksymalny czas oczekiwania (w milisekundach).
Wartość zwracana
Agent agent_status
po zakończeniu oczekiwania. Może to być agent_canceled
wartość lub agent_done
.
Uwagi
Zadanie agenta jest wykonywane po wprowadzeniu stanu lub agent_done
przez agentaagent_canceled
.
Jeśli parametr _Timeout
ma wartość inną niż stała COOPERATIVE_TIMEOUT_INFINITE
, wyjątek operation_timed_out jest zgłaszany, jeśli określony czas wygasa przed ukończeniem zadania agenta.
wait_for_all
Czeka na ukończenie zadań wszystkich określonych agentów.
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);
Parametry
count
Liczba wskaźników agenta znajdujących się w tablicy _PAgents
.
_PAgents
Tablica wskaźników do agentów do oczekiwania.
_PStatus
Wskaźnik do tablicy stanów agenta. Każda wartość stanu będzie reprezentować stan odpowiedniego agenta, gdy metoda zwróci wartość .
_Limit czasu
Maksymalny czas oczekiwania (w milisekundach).
Uwagi
Zadanie agenta jest wykonywane po wprowadzeniu stanu lub agent_done
przez agentaagent_canceled
.
Jeśli parametr _Timeout
ma wartość inną niż stała COOPERATIVE_TIMEOUT_INFINITE
, wyjątek operation_timed_out jest zgłaszany, jeśli określony czas wygasa przed ukończeniem zadania agenta.
wait_for_one
Czeka na ukończenie zadania przez dowolnego z określonych agentów.
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);
Parametry
count
Liczba wskaźników agenta znajdujących się w tablicy _PAgents
.
_PAgents
Tablica wskaźników do agentów do oczekiwania.
_Stan
Odwołanie do zmiennej, w której zostanie umieszczony stan agenta.
_Indeks
Odwołanie do zmiennej, w której zostanie umieszczony indeks agenta.
_Limit czasu
Maksymalny czas oczekiwania (w milisekundach).
Uwagi
Zadanie agenta jest wykonywane po wprowadzeniu stanu lub agent_done
przez agentaagent_canceled
.
Jeśli parametr _Timeout
ma wartość inną niż stała COOPERATIVE_TIMEOUT_INFINITE
, wyjątek operation_timed_out jest zgłaszany, jeśli określony czas wygasa przed ukończeniem zadania agenta.