agent-Klasse
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_INFINITE
aufweist, 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 _PAgents
vorhanden 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_INFINITE
aufweist, 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 _PAgents
vorhanden 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_INFINITE
aufweist, wird die Ausnahme ausgelöst, operation_timed_out ausgelöst wird, wenn der angegebene Zeitraum abläuft, bevor der Agent seine Aufgabe abgeschlossen hat.