Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.