Udostępnij za pośrednictwem


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;

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
Agenta 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
Zrobić 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.

~Agenta

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.

stan

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.

Zobacz też

Przestrzeń nazw współbieżności