Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein asynchroner Agent (oder nur Agent) ist eine Anwendungskomponente, die asynchron mit anderen Agents funktioniert, um größere Computeraufgaben zu lösen. Stellen Sie sich einen Agenten als Aufgabe vor, die einen festgelegten Lebenszyklus aufweist. Beispielsweise kann ein Agent Daten von einem Eingabe-/Ausgabegerät (z. B. Tastatur, Datei auf datenträger oder Netzwerkverbindung) lesen, und ein anderer Agent kann Aktionen für diese Daten ausführen, sobald diese verfügbar sind. Der erste Agent verwendet die Nachrichtenübergabe, um den zweiten Agent darüber zu informieren, dass weitere Daten verfügbar sind. Der Taskplaner "Concurrency Runtime" bietet einen effizienten Mechanismus, mit dem Agents kooperativ blockieren und ausbeuten können, ohne dass eine weniger effiziente Vorbesteuerung erforderlich ist.
Die Agents-Bibliothek definiert die Parallelitätsklasse::agent , um einen asynchronen Agent darzustellen.
agent ist eine abstrakte Klasse, die die virtuelle Methode concurrency::agent::run deklariert. Die run Methode führt die Aufgabe aus, die vom Agent ausgeführt wird. Da run abstrakt ist, müssen Sie diese Methode in jeder Klasse implementieren, die Sie von agent ableiten.
Agent-Lebenszyklus
Agents verfügen über einen festgelegten Lebenszyklus. Die Concurrency::agent_status-Aufzählung definiert die verschiedenen Zustände eines Agenten. Die folgende Abbildung ist ein Zustandsdiagramm, das zeigt, wie Agents von einem Zustand zu einem anderen wechseln. In dieser Abbildung stellen durchgezogene Linien Methoden dar, die Sie von Ihrer Anwendung aufrufen; gepunktete Linien hingegen solche, die von der Laufzeit aufgerufen werden.
In der folgenden Tabelle werden die einzelnen Status in der agent_status Enumeration beschrieben.
| Agentenstatus | Beschreibung |
|---|---|
agent_created |
Der Agent wurde nicht zur Ausführung eingeplant. |
agent_runnable |
Die Runtime-Umgebung plant den Agent zur Ausführung ein. |
agent_started |
Der Agent wurde gestartet und läuft. |
agent_done |
Der Agent ist fertig. |
agent_canceled |
Der Agent wurde gestoppt, bevor er den Zustand started erreichte. |
agent_created ist der Anfangszustand eines Agenten agent_runnable und agent_started sind die aktiven Zustände und agent_doneagent_canceled sind die Terminalzustände.
Verwenden Sie die concurrency::agent::status-Methode, um den aktuellen Status eines agent Objekts abzurufen. Obwohl die status Methode thread-sicher ist, kann sich der Status des Agents ändern, sobald die status Methode zurückkehrt. Beispielsweise könnte sich ein Agent im agent_started Zustand befinden, wenn Sie die status Methode aufrufen, aber er wechselt direkt nach der Rückkehr der agent_done Methode in den status Zustand.
Methoden und Merkmale
In der folgenden Tabelle sind einige der wichtigen Methoden aufgeführt, die zur agent Klasse gehören. Weitere Informationen zu allen agent Klassenmethoden finden Sie unter agent Class.
| Methode | Beschreibung |
|---|---|
| anfangen | Plant das agent Objekt zur Ausführung und versetzt es in den agent_runnable Zustand. |
| laufen | Führt die Aufgabe aus, die vom agent Objekt ausgeführt werden soll. |
| fertig | Verschiebt einen Agenten in den Zustand agent_done. |
| Abbrechen | Wenn der Agent nicht gestartet wurde, bricht diese Methode die Ausführung des Agents ab und legt ihn auf den agent_canceled Zustand fest. |
| Status | Ruft den aktuellen Status des agent Objekts ab. |
| Warte | Wartet, bis das agent Objekt in den agent_done- oder agent_canceled-Zustand eintritt. |
| wait_for_all | Wartet darauf, dass alle bereitgestellten agent Objekte den agent_done oder agent_canceled Zustand erreichen. |
| warte_auf_einen | Wartet darauf, dass mindestens eines der bereitgestellten agent Objekte in den agent_done- oder agent_canceled-Zustand gelangt. |
Rufen Sie nach dem Erstellen eines Agentobjekts die concurrency::agent::start-Methode auf, um es zur Ausführung zu planen. Die Laufzeit ruft die Methode nach dem run Planen des Agents auf und legt sie auf den agent_runnable Zustand fest.
Die Laufzeit verwaltet keine Ausnahmen, die von asynchronen Agents ausgelöst werden. Weitere Informationen zur Ausnahmebehandlung und zu Agents finden Sie unter "Ausnahmebehandlung".
Beispiel
Ein Beispiel zum Erstellen einer einfachen agentbasierten Anwendung finden Sie unter Walkthrough: Creating an Agent-Based Application.