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.
Diese Klasse ist als Basisklasse für alle unabhängigen Agents vorgesehen. Sie wird verwendet, um den Zustand von anderen Agents auszublenden und mithilfe von Meldungsübergabe zu interagieren.
Syntax
class agent;
Member
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
| Agent | Überladen. Erstellt einen Agent. |
| ~Agent Destructor | Zerstört den Agenten. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
| cancel | Verschiebt einen Agent aus den agent_created Zuständen in agent_runnable den agent_canceled Zustand. |
| start | Verschiebt einen Agent aus dem agent_created Zustand in den Zustand und plant ihn für die agent_runnable Ausführung. |
| status | Eine synchrone Quelle von Statusinformationen vom Agent. |
| status_port | Eine asynchrone Quelle von Statusinformationen vom Agent. |
| wait | Wartet, bis ein Agent seine Aufgabe abgeschlossen hat. |
| wait_for_all | Wartet, bis alle angegebenen Agents ihre Aufgaben ausführen. |
| wait_for_one | Wartet auf einen der angegebenen Agents, um seine Aufgabe abzuschließen. |
Geschützte Methoden
| Name | Beschreibung |
|---|---|
| fertig | Verschiebt einen Agent in den agent_done Zustand, der angibt, dass der Agent abgeschlossen ist. |
| run | Stellt die Hauptaufgabe eines Agents dar. run sollte in einer abgeleiteten Klasse außer Kraft gesetzt werden und gibt an, was der Agent nach dem Starten tun soll. |
Hinweise
Weitere Informationen finden Sie unter "Asynchrone Agents".
Vererbungshierarchie
agent
Anforderungen
Header: agents.h
Namespace: Parallelität
Agent
Erstellt einen Agent.
agent();
agent(Scheduler& _PScheduler);
agent(ScheduleGroup& _PGroup);
Parameter
_PScheduler
Das Scheduler Objekt, in dem die Ausführungsaufgabe des Agents geplant ist.
_PGroup
Das ScheduleGroup Objekt, in dem die Ausführungsaufgabe des Agents geplant ist. Das verwendete Scheduler -Objekt wird von der Planungsgruppe impliziert.
Hinweise
Die Runtime verwendet das Standardplanungsprogramm, wenn Sie den _PScheduler -Parameter oder den _PGroup -Parameter nicht angeben.
~Agent
Zerstört den Agenten.
virtual ~agent();
Hinweise
Es ist ein Fehler, einen Agenten zu zerstören, der sich nicht in einem Terminalzustand befindet (entweder agent_done oder agent_canceled). Dies kann vermieden werden, indem sie darauf warten, dass der Agent einen Terminalzustand im Destruktor einer Klasse erreicht, die von der agent Klasse erbt.
cancel
Verschiebt einen Agent aus den agent_created Zuständen in agent_runnable den agent_canceled Zustand.
bool cancel();
Rückgabewert
true wenn der Agent abgebrochen wurde, false andernfalls. Ein Agent kann nicht abgebrochen werden, wenn er bereits ausgeführt wurde oder bereits abgeschlossen wurde.
done
Verschiebt einen Agent in den agent_done Zustand, der angibt, dass der Agent abgeschlossen ist.
bool done();
Rückgabewert
true wenn der Agent in den agent_done Zustand verschoben wird, false andernfalls. Ein Agent, der abgebrochen wurde, kann nicht in den agent_done Zustand verschoben werden.
Hinweise
Diese Methode sollte am Ende der run Methode aufgerufen werden, wenn Sie wissen, dass die Ausführung Des Agents abgeschlossen ist.
run
Stellt die Hauptaufgabe eines Agents dar. run sollte in einer abgeleiteten Klasse außer Kraft gesetzt werden und gibt an, was der Agent nach dem Starten tun soll.
virtual void run() = 0;
Hinweise
Der Agentstatus wird rechts agent_started geändert, bevor diese Methode aufgerufen wird. Die Methode sollte vor der Rückgabe für den Agent mit einem geeigneten Status aufgerufen done werden und kann keine Ausnahmen auslösen.
start
Verschiebt einen Agent aus dem agent_created Zustand in den Zustand und plant ihn für die agent_runnable Ausführung.
bool start();
Rückgabewert
true wenn der Agent ordnungsgemäß gestartet wurde, false andernfalls. Ein Agent, der abgebrochen wurde, kann nicht gestartet werden.
status
Eine synchrone Quelle von Statusinformationen vom Agent.
agent_status status();
Rückgabewert
Gibt den aktuellen Status des Agents zurück. Beachten Sie, dass sich dieser zurückgegebene Zustand unmittelbar nach der Rückgabe ändern konnte.
status_port
Eine asynchrone Quelle von Statusinformationen vom Agent.
ISource<agent_status>* status_port();
Rückgabewert
Gibt eine Nachrichtenquelle zurück, die Nachrichten über den aktuellen Status des Agents senden kann.
wait
Wartet, bis ein Agent seine Aufgabe abgeschlossen hat.
static agent_status __cdecl wait(
_Inout_ agent* _PAgent,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parameter
_PAgent
Ein Zeiger auf den Agent, auf den gewartet werden soll.
_Zeitüberschreitung
Die maximale Wartezeit in Millisekunden.
Rückgabewert
Der agent_status Agent, wenn die Wartezeit abgeschlossen ist. Dies kann entweder sein agent_canceled oder agent_done.
Hinweise
Eine Agentaufgabe wird abgeschlossen, wenn der Agent in den agent_canceled Status agent_done wechselt.
Wenn der Parameter _Timeout einen anderen Wert als die Konstante COOPERATIVE_TIMEOUT_INFINITEaufweist, wird die Ausnahme ausgelöst, operation_timed_out ausgelöst wird, wenn der angegebene Zeitraum abläuft, bevor der Agent seine Aufgabe abgeschlossen hat.
wait_for_all
Wartet, bis alle angegebenen Agents ihre Aufgaben ausführen.
static void __cdecl wait_for_all(
size_t count,
_In_reads_(count) agent** _PAgents,
_Out_writes_opt_(count) agent_status* _PStatus = NULL,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parameter
count
Die Anzahl der Agentzeiger, die im Array _PAgentsvorhanden sind.
_PAgents
Ein Array von Zeigern auf die Agents, auf die gewartet werden soll.
_PStatus
Ein Zeiger auf ein Array von Agentstatus. Jeder Statuswert stellt den Status des entsprechenden Agents dar, wenn die Methode zurückgegeben wird.
_Zeitüberschreitung
Die maximale Wartezeit in Millisekunden.
Hinweise
Eine Agentaufgabe wird abgeschlossen, wenn der Agent in den agent_canceled Status agent_done wechselt.
Wenn der Parameter _Timeout einen anderen Wert als die Konstante COOPERATIVE_TIMEOUT_INFINITEaufweist, wird die Ausnahme ausgelöst, operation_timed_out ausgelöst wird, wenn der angegebene Zeitraum abläuft, bevor der Agent seine Aufgabe abgeschlossen hat.
wait_for_one
Wartet auf einen der angegebenen Agents, um seine Aufgabe abzuschließen.
static void __cdecl wait_for_one(
size_t count,
_In_reads_(count) agent** _PAgents,
agent_status& _Status,
size_t& _Index,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parameter
count
Die Anzahl der Agentzeiger, die im Array _PAgentsvorhanden sind.
_PAgents
Ein Array von Zeigern auf die Agents, auf die gewartet werden soll.
_Status
Ein Verweis auf eine Variable, in der der Agentstatus platziert wird.
_Index
Ein Verweis auf eine Variable, in der der Agentindex platziert wird.
_Zeitüberschreitung
Die maximale Wartezeit in Millisekunden.
Hinweise
Eine Agentaufgabe wird abgeschlossen, wenn der Agent in den agent_canceled Status agent_done wechselt.
Wenn der Parameter _Timeout einen anderen Wert als die Konstante COOPERATIVE_TIMEOUT_INFINITEaufweist, wird die Ausnahme ausgelöst, operation_timed_out ausgelöst wird, wenn der angegebene Zeitraum abläuft, bevor der Agent seine Aufgabe abgeschlossen hat.