Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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.