Udostępnij za pośrednictwem


Agenci asynchroniczne

Asynchronicznego agenta (lub po prostu agenta) jest składnikiem aplikacji, który działa asynchronicznie, z innymi czynnikami rozwiązać większych zadań obliczeniowych.Agenta można traktować jako zadanie set cyklu życia.Na przykład jeden agent może odczytu danych z urządzenia wejścia/wyjścia (takie jak klawiatury, w pliku na dysku lub połączenie sieciowe) i innym agent może wykonać akcję na danych staje się dostępne.Pierwszy agent używa przekazywania wiadomości do informowania drugiej agenta jest dostępnych więcej danych.Harmonogram zadań Runtime współbieżności zapewniającą wydajny mechanizm pracownikom blokować i dają wspólnie bez konieczności wywłaszczenie mniej wydajne.

Określa bibliotekę agenci concurrency::agent klasy asynchronicznego agenta.agentKlasa abstrakcyjna, która deklaruje metoda wirtualna jest concurrency::agent::run.run Metoda wykonuje zadanie jest wykonywane przez agenta.Ponieważ run jest abstrakcyjna, należy zaimplementować tę metodę w każdej klasie, który pochodzi od agent.

Agent cyklu.

Agenci mają set cyklu życia.Concurrency::agent_status wyliczenie definiuje różne stany agenta.Na rysunku poniżej przedstawiono diagram stanu, który pokazuje, jak agentów postępu z jednego Państwa do drugiego.Na tej ilustracji linie ciągłe reprezentują metod, które można wywoływać z aplikacji; linie kropkowane reprezentują metod, które są wywoływane z środowiska wykonawczego.

Diagram stanów agenta

W poniższej tabeli opisano każdego Państwa w agent_status wyliczania.

Stan agenta.

Opis

agent_created

Agent nie została zaplanowana do wykonania.

agent_runnable

Środowisko wykonawcze jest planowanie agenta do wykonania.

agent_started

Agent została uruchomiona i działa.

agent_done

Agent zakończył.

agent_canceled

Agent została anulowana przed jej wprowadzeniem started Państwo.

agent_createdpoczątkowy stan agenta, jest agent_runnable i agent_started są aktywne stany i agent_done i agent_canceled terminali Państwa.

Użyj concurrency::agent::status metoda pobierania bieżącego stanu agent obiektu.Chociaż status metody bezpiecznego współbieżności, stan agenta można zmienić przez czas status metoda zwraca.Na przykład, agent może być w agent_started Państwo po wywołaniu status metody, ale przeniesiony do agent_done podać tylko po status metoda zwraca.

Metody i funkcje

W poniższej tabeli przedstawiono niektóre z ważnych metod, które należą do agent klasy.Aby uzyskać więcej informacji o wszystkich agent metody klasy, zobacz Agent klasy.

Metoda

Opis

Start

Harmonogramy agent obiektu do wykonania i ustawia jego agent_runnable Państwo.

Uruchom

Wykonuje zadanie, które ma być wykonywane przez agent obiektu.

Sporządzono

Przenosi do agenta agent_done Państwo.

Anuluj

Jeśli nie uruchomiono agenta, ta metoda anuluje wykonanie agenta i ustawia jego agent_canceled Państwo.

Stan

Pobiera bieżący stan agent obiektu.

Czekaj

Czeka na agent obiekt, aby wprowadzić agent_done lub agent_canceled Państwo.

wait_for_all

Czeka, aż wszystkie dostarczone agent obiektów, aby wprowadzić agent_done lub agent_canceled Państwo.

wait_for_one

Czeka na co najmniej jeden z dołączonym agent obiektów, aby wprowadzić agent_done lub agent_canceled Państwo.

Po utworzeniu obiektu agenta call concurrency::agent::start metody planowania jego wykonania.Wywołania runtime run metoda po planuje agenta i ustawia jego agent_runnable Państwo.

Środowisko wykonawcze nie zarządza wyjątków, które są generowane przez agentów asynchronicznego.Aby uzyskać więcej informacji na temat obsługi wyjątków i agenci Zobacz Obsługa wyjątków w Runtime współbieżności.

Przykład

Przykład ilustruje sposób tworzenia podstawowych aplikacji opartych na agentach, zobacz Instruktaż: Tworzenie aplikacji opartych na agenta.

Zobacz też

Koncepcje

Biblioteka agentów asynchroniczne