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.
~agent Destructor Zničí agenta.

Veřejné metody

Název Popis
zrušit Přesune agenta z jednoho ze stavů agent_created nebo agent_runnable do stavu agent_canceled.
start Přesune agenta ze stavu agent_created do stavu agent_runnable a naplánuje ho ke spuštění.
status Synchronní zdroj informací o stavu od agenta.
status_port Asynchronní zdroj informací o stavu od agenta.
Počkej Čeká, až agent dokončí svou úlohu.
čekat_na_vše Č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 specifikuje, co by měl agent udělat po svém spuštění.

Poznámky

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

Hierarchie dědičnosti

agent

Požadavky

Hlavička: agents.h

Obor názvů: souběžnost

agent

Vytvoří agenta.

agent();

agent(Scheduler& _PScheduler);

agent(ScheduleGroup& _PGroup);

Parametry

_PScheduler
Objekt Scheduler, ve kterém je naplánovaný prováděcí úkol agenta.

_PGroup
Objekt ScheduleGroup, ve kterém je naplánovaný prováděcí úkol agenta. Použití Scheduler objektu je dané skupinou plánů.

Poznámky

Modul runtime používá výchozí plánovač, pokud nezadáte buď parametr _PScheduler nebo parametr _PGroup.

~agent

Zničí agenta.

virtual ~agent();

Poznámky

Jedná se o chybu zničit agenta, který není v terminálním stavu (buď agent_done nebo agent_canceled). Tomu se může vyhnout čekáním, až agent dosáhne terminálního stavu v destruktoru třídy, která dědí z třídy agent.

zrušit

Přesune agenta z jednoho ze stavů agent_created nebo agent_runnable do stavu agent_canceled.

bool cancel();

Návratová hodnota

true pokud byl agent zrušen, false v opačném případě. 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.

provozovat

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

virtual void run() = 0;

Poznámky

Stav agenta se změní na agent_started bezprostředně před vyvoláním 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.

spustit

Přesune agenta ze stavu agent_created do stavu agent_runnable a naplánuje ho ke 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 od 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 od 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.

počkejte

Čeká, až agent dokončí svou úlohu.

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

Stav agent_status agenta 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.

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

čekat_na_vše

Č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é má č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.

Pokud má parametr _Timeout jinou hodnotu než konstanta COOPERATIVE_TIMEOUT_INFINITE, vyvolá se chyba operation_timed_out, pokud zadaná doba vyprší před tím, než agent dokončí svou úlohu.

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.

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

Viz také

concurrency – obor názvů