Agenci asynchroniczni
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.
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 — Klasa.
Metoda |
Opis |
---|---|
Harmonogramy agent obiektu do wykonania i ustawia jego agent_runnable Państwo. |
|
Wykonuje zadanie, które ma być wykonywane przez agent obiektu. |
|
Przenosi do agenta agent_done Państwo. |
|
Jeśli nie uruchomiono agenta, ta metoda anuluje wykonanie agenta i ustawia jego agent_canceled Państwo. |
|
Pobiera bieżący stan agent obiektu. |
|
Czeka na agent obiekt, aby wprowadzić agent_done lub agent_canceled Państwo. |
|
Czeka, aż wszystkie dostarczone agent obiektów, aby wprowadzić agent_done lub agent_canceled Państwo. |
|
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 we współbieżności środowiska wykonawczego.
Przykład
Przykład ilustruje sposób tworzenia podstawowych aplikacji opartych na agentach, zobacz Wskazówki: tworzenie aplikacji opartej o agentów.