Sdílet prostřednictvím


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.

Diagram stavu agenta

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

spustit

Plány agent objekt pro spuštění a nastaví agent_runnable státu.

spustit

Spustí úlohu, která má být provedena agent objektu.

v

Přesune zástupce, který agent_done státu.

Storno

Jestliže agent není spuštěna, tato metoda zruší spuštění agenta a nastaví na agent_canceled státu.

Stav

Načte aktuální stav agent objektu.

čekání

Čeká agent objekt zadejte agent_done nebo agent_canceled státu.

wait_for_all

Všechny poskytnuté čeká agent objekty, zadejte agent_done nebo agent_canceled státu.

wait_for_one

Č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.

Viz také

Koncepty

Knihovna asynchronních agentů