Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.