Freigeben über


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_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.

Siehe auch

Concurrency-Namespace