Share via


agentklasse

Een klasse die is bedoeld om te worden gebruikt als basisklasse voor alle onafhankelijke agents. Het wordt gebruikt om de status van andere agents te verbergen en te communiceren met behulp van berichtdoorgifte.

Syntaxis

class agent;

Leden

Openbare constructors

Naam Description
agent Overbelast. Maakt een agent.
~agentdestructor Vernietigt de agent.

Openbare methoden

Naam Description
annuleren Hiermee verplaatst u een agent van de agent_created of agent_runnable statussen naar de agent_canceled status.
start Hiermee verplaatst u een agent van de agent_created status naar de agent_runnable status en plant u deze voor uitvoering.
status Een synchrone bron van statusinformatie van de agent.
status_port Een asynchrone bron van statusinformatie van de agent.
wachten Wacht totdat een agent de taak heeft voltooid.
wait_for_all Wacht totdat alle opgegeven agents hun taken hebben voltooid.
wachten_op_een Wacht tot een van de opgegeven agents de taak heeft voltooid.

Beveiligde methoden

Naam Description
klaar Hiermee verplaatst u een agent naar de agent_done status, waarmee wordt aangegeven dat de agent zijn taak heeft voltooid.
uitvoeren Vertegenwoordigt de hoofdtaak van een agent. run moet worden overschreven in een afgeleide klasse en specificeert wat de agent moet doen nadat deze is gestart.

Opmerkingen

Zie Asynchrone agents voor meer informatie.

Overnamehiërarchie

agent

Requirements

Header: agents.h

Naamruimte: concurrentie

agent

Maakt een agent.

agent();

agent(Scheduler& _PScheduler);

agent(ScheduleGroup& _PGroup);

Parameterwaarden

_PScheduler
Het Scheduler object waarin de uitvoeringstaak van de agent is gepland.

_PGroup
Het ScheduleGroup object waarin de uitvoeringstaak van de agent is gepland. Het gebruikte Scheduler-object wordt geïmpliceerd door de planningsgroep.

Opmerkingen

De runtime gebruikt de standaardplanner als u de _PScheduler of _PGroup parameters niet opgeeft.

~agent

Vernietigt de agent.

virtual ~agent();

Opmerkingen

Het is een fout om een agent te vernietigen die zich niet in een terminale toestand bevindt (of agent_done of agent_canceled). Dit kan worden vermeden door te wachten totdat de agent een terminalstatus heeft bereikt in de destructor van een klasse die wordt overgenomen van de agent klasse.

cancel

Hiermee verplaatst u een agent van de agent_created of agent_runnable statussen naar de agent_canceled status.

bool cancel();

Retourwaarde

true als de agent is geannuleerd, false anders. Een agent kan niet worden geannuleerd als deze al is gestart of al is voltooid.

done

Een agent wordt naar de agent_done status verplaatst, waarmee wordt aangegeven dat de agent zijn taak heeft voltooid.

bool done();

Retourwaarde

true als de agent naar de agent_done toestand wordt verplaatst, false anders. Een agent die is geannuleerd, kan niet worden verplaatst naar de agent_done status.

Opmerkingen

Deze methode moet worden aangeroepen aan het einde van de run methode wanneer u weet dat de uitvoering van uw agent is voltooid.

run

Vertegenwoordigt de hoofdtaak van een agent. run moet worden overgenomen in een afgeleide klasse en specificeert wat de agent moet doen nadat deze is gestart.

virtual void run() = 0;

Opmerkingen

De agentstatus wordt gewijzigd in agent_started vlak voordat deze methode wordt aangeroepen. De methode moet done aanroepen op de agent met de juiste status voordat hij terugkeert, en mag geen uitzonderingen werpen.

start

Hiermee verplaatst u een agent van de agent_created status naar de agent_runnable status en plant u deze voor uitvoering.

bool start();

Retourwaarde

true indien de agent correct is gestart, false zo niet. Een agent die is opgeheven, kan niet opnieuw worden gestart.

status

Een synchrone bron van statusinformatie van de agent.

agent_status status();

Retourwaarde

Retourneert de huidige status van de agent. Houd er rekening mee dat deze geretourneerde status direct kan worden gewijzigd nadat deze is geretourneerd.

statuspoort

Een asynchrone bron van statusinformatie van de agent.

ISource<agent_status>* status_port();

Retourwaarde

Retourneert een berichtbron die berichten kan verzenden over de huidige status van de agent.

wait

Wacht totdat een agent de taak heeft voltooid.

static agent_status __cdecl wait(
    _Inout_ agent* _PAgent,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parameterwaarden

_PAgent
Een aanwijzer naar de agent waarop gewacht moet worden.

_Timeout
De maximale tijd waarop moet worden gewacht, in milliseconden.

Retourwaarde

De agent_status van de agent wanneer de wachttijd is voltooid. Dit kan of agent_canceled of agent_done zijn.

Opmerkingen

Een agenttaak wordt voltooid wanneer de agent de agent_canceled of agent_done statussen invoert.

Als de parameter _Timeout een andere waarde heeft dan de constante COOPERATIVE_TIMEOUT_INFINITE, wordt de uitzondering operation_timed_out gegenereerd als de opgegeven tijd verloopt voordat de agent de taak heeft voltooid.

wait_for_all

Wacht totdat alle opgegeven agents hun taken hebben voltooid.

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);

Parameterwaarden

aantal
Het aantal agentpointers dat aanwezig is in de matrix _PAgents.

_PAgents
Een matrix met aanwijzers naar de agents om op te wachten.

_PStatus
Een aanwijzer naar een matrix met agentstatussen. Elke statuswaarde vertegenwoordigt de status van de bijbehorende agent wanneer de methode wordt geretourneerd.

_Timeout
De maximale tijd waarop moet worden gewacht, in milliseconden.

Opmerkingen

Een agenttaak wordt voltooid wanneer de agent de agent_canceled of agent_done statussen invoert.

Als de parameter _Timeout een andere waarde heeft dan de constante COOPERATIVE_TIMEOUT_INFINITE, wordt de uitzondering operation_timed_out gegenereerd als de opgegeven tijd verloopt voordat de agent de taak heeft voltooid.

wait_for_one

Wacht tot een van de opgegeven agents de taak heeft voltooid.

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);

Parameterwaarden

aantal
Het aantal agentpointers dat aanwezig is in de matrix _PAgents.

_PAgents
Een matrix met aanwijzers naar de agents om op te wachten.

_Status
Een verwijzing naar een variabele waar de agentstatus wordt geplaatst.

_Index
Een verwijzing naar een variabele waar de agentindex wordt geplaatst.

_Timeout
De maximale tijd waarop moet worden gewacht, in milliseconden.

Opmerkingen

Een agenttaak wordt voltooid wanneer de agent de agent_canceled of agent_done statussen invoert.

Als de parameter _Timeout een andere waarde heeft dan de constante COOPERATIVE_TIMEOUT_INFINITE, wordt de uitzondering operation_timed_out gegenereerd als de opgegeven tijd verloopt voordat de agent de taak heeft voltooid.

Zie ook

concurrentie Namespace