Asynchronní agenti
Asynchronní agent (nebo pouze agent) je aplikace, kterou asynchronně pracuje s větší výpočetní úlohy vyřešit jinými prostředky.Agent si lze Představte jako úkol, který má nastavené životnosti.Například jeden agent může čtení dat z jiného agenta a vstupní/výstupní zařízení (například klávesnice, soubor na disku nebo síťové připojení) může provádět akce dat. Jakmile je k dispozici.První agent používá předávání zprávy informovat druhého agenta k dispozici další data.Plánovač úloh souběžnosti Runtime poskytuje efektivní mechanismus povolení agenti blokovat a výnosu ve bez nutnosti preemption méně efektivní.
Definuje knihovny agentů concurrency::agent třídy asynchronní agenta.agentabstraktní třída, která prohlašuje virtuální metody je concurrency::agent::run.run Metoda provede úkol, který provádí agent.Protože run je abstraktní, musíte implementovat tuto metodu v každé třídy, která je odvozena od agent.
Agent životního cyklu
Agenti mají nastavené životnosti.Concurrency::agent_status definuje výčet různých státech agenta.Na následujícím obrázku je stát diagram, který zobrazuje, jak průběh agenti z jednoho státu do druhého.Na tomto obrázku plné čáry představují metody, které volají z aplikace; tečkované čáry představují metody, které jsou volány z modulu runtime.
Následující tabulka popisuje každý stát v agent_status výčtu.
Stav agenta |
Description |
---|---|
agent_created |
Agent není bylo naplánováno provedení. |
agent_runnable |
Modul runtime je plánování agent pro spuštění. |
agent_started |
Agent byl spuštěn a je spuštěn. |
agent_done |
Agent je dokončena. |
agent_canceled |
Agent byl zrušen před vstoupil started státu. |
agent_createdPočáteční stav agenta, je agent_runnable a agent_started jsou aktivní stavy a agent_done a agent_canceled jsou státy terminálu.
Použití concurrency::agent::status metoda načíst aktuální stav agent objektu.Přestože status metoda je souběžný bezpečné, můžete změnit stav agenta v době status metoda vrátí.Například mohl být agent agent_started státu při volání status metoda, ale přesunut do agent_done těsně za stát status metoda vrátí.
Metody a funkce
Následující tabulka uvádí některé důležité metod, které patří agent třídy.Další informace o všech agent metody třídy, viz agent – třída.
Metoda |
Description |
---|---|
Plány agent objekt pro spuštění a nastaví agent_runnable státu. |
|
Spustí úlohu, která má být provedena agent objektu. |
|
Přesune zástupce, který agent_done státu. |
|
Jestliže agent není spuštěna, tato metoda zruší spuštění agenta a nastaví na agent_canceled státu. |
|
Načte aktuální stav agent objektu. |
|
Čeká agent objekt zadejte agent_done nebo agent_canceled státu. |
|
Všechny poskytnuté čeká agent objekty, zadejte agent_done nebo agent_canceled státu. |
|
Čeká alespoň zadané agent objekty, zadejte agent_done nebo agent_canceled státu. |
Po vytvoření objektu agent volání concurrency::agent::start způsob naplánovat spuštění.Runtime volání run metoda po naplánuje agent a nastaví agent_runnable státu.
Modul runtime nespravuje výjimek vyvolaných asynchronní agenty.Další informace o zpracování výjimek a agenti, viz Zpracování výjimek v Concurrency Runtime.
Příklad
Příklad ukazuje, jak vytvořit základní aplikace založená na agenta, viz Návod: Vytvoření aplikace založené na agentovi.