Sdílet prostřednictvím


agent – třída

Třída určená k použití jako základní třídy pro všechny nezávislé agenty. Slouží ke skrytí stavu před jinými agenty a interakci pomocí předávání zpráv.

Syntaxe

class agent;

Členové

Veřejné konstruktory

Název Popis
agent Přetíženo. Vytvoří agenta.
~destruktor agenta Zničí agenta.

Veřejné metody

Název Popis
zrušit Přesune agenta agent_created agent_runnable z obou stavů do agent_canceled stavu.
start Přesune agenta agent_created ze stavu do agent_runnable stavu a naplánuje ho na spuštění.
status Synchronní zdroj informací o stavu z agenta.
status_port Asynchronní zdroj informací o stavu z agenta.
Počkej Čeká na dokončení úlohy agenta.
wait_for_all Čeká, až všichni zadaná agenta dokončí své úkoly.
wait_for_one Čeká, až některý ze zadaných agentů dokončí úlohu.

Chráněné metody

Název Popis
hotový Přesune agenta do agent_done stavu, který označuje, že agent byl dokončen.
Spusťte Představuje hlavní úlohu agenta. run by měl být přepsán v odvozené třídě a určuje, co má agent dělat po spuštění.

Poznámky

Další informace naleznete v tématu Asynchronní agenti.

Hierarchie dědičnosti

agent

Požadavky

Hlavička: agents.h

Namespace: souběžnost

agent

Vytvoří agenta.

agent();

agent(Scheduler& _PScheduler);

agent(ScheduleGroup& _PGroup);

Parametry

_PScheduler
Objekt Scheduler , ve kterém je naplánovaná úloha provádění agenta.

_PGroup
Objekt ScheduleGroup , ve kterém je naplánovaná úloha provádění agenta. Použitý Scheduler objekt je odvozen ze skupiny plánů.

Poznámky

Modul runtime používá výchozí plánovač, pokud nezadáte _PScheduler parametry._PGroup

~agent

Zničí agenta.

virtual ~agent();

Poznámky

Jedná se o chybu při zničení agenta, který není ve stavu terminálu (neboagent_done).agent_canceled Tomu se může vyhnout čekáním na to, aby agent dosáhl stavu terminálu v destruktoru třídy, která dědí z agent třídy.

zrušit

Přesune agenta agent_created agent_runnable z obou stavů do agent_canceled stavu.

bool cancel();

Návratová hodnota

true pokud byl agent zrušen, false jinak. Agenta nelze zrušit, pokud už byl spuštěný nebo už je dokončený.

Hotovo

Přesune agenta do agent_done stavu, který označuje, že agent byl dokončen.

bool done();

Návratová hodnota

true pokud je agent přesunut do agent_done stavu, false jinak. Agenta, který byl zrušen, nelze přesunout do agent_done stavu.

Poznámky

Tato metoda by měla být volána na konci run metody, když víte, že spuštění agenta bylo dokončeno.

příkaz Run

Představuje hlavní úlohu agenta. run by měl být přepsán v odvozené třídě a určuje, co má agent dělat po spuštění.

virtual void run() = 0;

Poznámky

Stav agenta se změní agent_started přímo před vyvolání této metody. Metoda by měla před vrácením vyvolat done agenta s odpovídajícím stavem a nemusí vyvolat žádné výjimky.

start

Přesune agenta agent_created ze stavu do agent_runnable stavu a naplánuje ho na spuštění.

bool start();

Návratová hodnota

true pokud se agent spustil správně, false jinak. Agenta, který byl zrušen, nelze spustit.

stav

Synchronní zdroj informací o stavu z agenta.

agent_status status();

Návratová hodnota

Vrátí aktuální stav agenta. Všimněte si, že tento vrácený stav se může okamžitě po vrácení změnit.

status_port

Asynchronní zdroj informací o stavu z agenta.

ISource<agent_status>* status_port();

Návratová hodnota

Vrátí zdroj zprávy, který může odesílat zprávy o aktuálním stavu agenta.

wait

Čeká na dokončení úlohy agenta.

static agent_status __cdecl wait(
    _Inout_ agent* _PAgent,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parametry

_PAgent
Ukazatel na agenta, na který se má čekat.

_Přerušení zápasu
Maximální doba čekání v milisekundách.

Návratová hodnota

Agent agent_status po dokončení čekání. Může to být agent_canceled nebo agent_done.

Poznámky

Úloha agenta se dokončí, když agent přejde do stavu agent_canceled nebo agent_done stavu.

Pokud má parametr _Timeout jinou hodnotu než konstanta COOPERATIVE_TIMEOUT_INFINITE, vyvolá se výjimka , operation_timed_out je vyvolán, pokud vyprší zadaná doba před dokončením úlohy agenta.

wait_for_all

Čeká, až všichni zadaná agenta dokončí své úkoly.

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
Počet ukazatelů agenta, které jsou přítomné v poli _PAgents.

_PAgents
Pole ukazatelů na agenty, na které mají čekat.

_PStatus
Ukazatel na pole stavů agenta. Každá hodnota stavu bude představovat stav odpovídajícího agenta při vrácení metody.

_Přerušení zápasu
Maximální doba čekání v milisekundách.

Poznámky

Úloha agenta se dokončí, když agent přejde do stavu agent_canceled nebo agent_done stavu.

Pokud má parametr _Timeout jinou hodnotu než konstanta COOPERATIVE_TIMEOUT_INFINITE, vyvolá se výjimka , operation_timed_out je vyvolán, pokud vyprší zadaná doba před dokončením úlohy agenta.

wait_for_one

Čeká, až některý ze zadaných agentů dokončí úlohu.

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
Počet ukazatelů agenta, které jsou přítomné v poli _PAgents.

_PAgents
Pole ukazatelů na agenty, na které mají čekat.

_Stav
Odkaz na proměnnou, kde bude umístěn stav agenta.

_Index
Odkaz na proměnnou, kde se umístí index agenta.

_Přerušení zápasu
Maximální doba čekání v milisekundách.

Poznámky

Úloha agenta se dokončí, když agent přejde do stavu agent_canceled nebo agent_done stavu.

Pokud má parametr _Timeout jinou hodnotu než konstanta COOPERATIVE_TIMEOUT_INFINITE, vyvolá se výjimka , operation_timed_out je vyvolán, pokud vyprší zadaná doba před dokončením úlohy agenta.

Viz také

concurrency – obor názvů