Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Classe destinée à être utilisée comme classe de base pour tous les agents indépendants. Elle est utilisée pour masquer l'état des autres agents et interagir par transmission de messages.
Syntaxe
class agent;
Membres
Constructeurs publics
| Nom | Description |
|---|---|
| agent | Surcharge. Construit un agent. |
| ~ Destructeur de l’agent | Détruit l’agent. |
Méthodes publiques
| Nom | Description |
|---|---|
| cancel | Déplace un agent de l’état ou agent_runnable de l’état.agent_created agent_canceled |
| start | Déplace un agent de l’état agent_created vers l’état agent_runnable et le planifie pour l’exécution. |
| statut | Source synchrone d’informations d’état de l’agent. |
| status_port | Source asynchrone d’informations d’état de l’agent. |
| wait | Attend qu’un agent termine sa tâche. |
| wait_for_all | Attend que tous les agents spécifiés terminent leurs tâches. |
| wait_for_one | Attend que l’un des agents spécifiés termine sa tâche. |
Méthodes protégées
| Nom | Description |
|---|---|
| done | Déplace un agent dans l’état agent_done , indiquant que l’agent est terminé. |
| run | Représente la tâche principale d’un agent. run doit être substitué dans une classe dérivée et spécifie ce que l’agent doit faire une fois qu’il a démarré. |
Notes
Pour plus d’informations, consultez Agents asynchrones.
Hiérarchie d'héritage
agent
Spécifications
En-tête : agents.h
Espace de noms : concurrency
agent
Construit un agent.
agent();
agent(Scheduler& _PScheduler);
agent(ScheduleGroup& _PGroup);
Paramètres
_PScheduler
Objet Scheduler dans lequel la tâche d’exécution de l’agent est planifiée.
_PGroup
Objet ScheduleGroup dans lequel la tâche d’exécution de l’agent est planifiée. L’objet Scheduler utilisé est suggéré par le groupe de planification.
Notes
Le runtime utilise le planificateur par défaut si vous ne spécifiez pas les paramètres _PScheduler ou _PGroup .
~agent
Détruit l’agent.
virtual ~agent();
Notes
Il s’agit d’une erreur pour détruire un agent qui n’est pas dans un état terminal (ou agent_done agent_canceled). Cela peut être évité en attendant que l’agent atteigne un état terminal dans le destructeur d’une classe qui hérite de la agent classe.
cancel
Déplace un agent de l’état ou agent_runnable de l’état.agent_created agent_canceled
bool cancel();
Valeur de retour
true si l’agent a été annulé, false sinon. Un agent ne peut pas être annulé s’il a déjà démarré ou s’il est déjà terminé.
done
Déplace un agent dans l’état agent_done , indiquant que l’agent est terminé.
bool done();
Valeur de retour
true si l’agent est déplacé vers l’état agent_done , false sinon. Un agent qui a été annulé ne peut pas être déplacé vers l’état agent_done .
Notes
Cette méthode doit être appelée à la fin de la run méthode, lorsque vous savez que l’exécution de votre agent est terminée.
run
Représente la tâche principale d’un agent. run doit être substitué dans une classe dérivée et spécifie ce que l’agent doit faire une fois qu’il a démarré.
virtual void run() = 0;
Notes
L’état de l’agent est remplacé juste agent_started avant l’appel de cette méthode. La méthode doit appeler done sur l’agent avec un état approprié avant de retourner, et ne peut pas lever d’exceptions.
start
Déplace un agent de l’état agent_created vers l’état agent_runnable et le planifie pour l’exécution.
bool start();
Valeur de retour
true si l’agent a démarré correctement, false sinon. Un agent qui a été annulé ne peut pas être démarré.
statut
Source synchrone d’informations d’état de l’agent.
agent_status status();
Valeur de retour
Retourne l’état actuel de l’agent. Notez que cet état retourné peut changer immédiatement après avoir été retourné.
status_port
Source asynchrone d’informations d’état de l’agent.
ISource<agent_status>* status_port();
Valeur de retour
Retourne une source de message qui peut envoyer des messages sur l’état actuel de l’agent.
wait
Attend qu’un agent termine sa tâche.
static agent_status __cdecl wait(
_Inout_ agent* _PAgent,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Paramètres
_PAgent
Pointeur vers l’agent à attendre.
_Timeout
Durée maximale pendant laquelle attendre, en millisecondes.
Valeur de retour
De agent_status l’agent une fois l’attente terminée. Cela peut être agent_canceled ou agent_done.
Notes
Une tâche d’agent est terminée lorsque l’agent entre dans les états ou agent_done les agent_canceled états.
Si le paramètre _Timeout a une valeur autre que la constante COOPERATIVE_TIMEOUT_INFINITE, l’exception operation_timed_out est levée si la durée spécifiée expire avant que l’agent ait terminé sa tâche.
wait_for_all
Attend que tous les agents spécifiés terminent leurs tâches.
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);
Paramètres
count
Nombre de pointeurs d’agent présents dans le tableau _PAgents.
_PAgents
Tableau de pointeurs vers les agents à attendre.
_PStatus
Pointeur vers un tableau d’états d’agent. Chaque valeur d’état représente l’état de l’agent correspondant lorsque la méthode est retournée.
_Timeout
Durée maximale pendant laquelle attendre, en millisecondes.
Notes
Une tâche d’agent est terminée lorsque l’agent entre dans les états ou agent_done les agent_canceled états.
Si le paramètre _Timeout a une valeur autre que la constante COOPERATIVE_TIMEOUT_INFINITE, l’exception operation_timed_out est levée si la durée spécifiée expire avant que l’agent ait terminé sa tâche.
wait_for_one
Attend que l’un des agents spécifiés termine sa tâche.
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);
Paramètres
count
Nombre de pointeurs d’agent présents dans le tableau _PAgents.
_PAgents
Tableau de pointeurs vers les agents à attendre.
_Statut
Référence à une variable où l’état de l’agent sera placé.
_Index
Référence à une variable où l’index de l’agent sera placé.
_Timeout
Durée maximale pendant laquelle attendre, en millisecondes.
Notes
Une tâche d’agent est terminée lorsque l’agent entre dans les états ou agent_done les agent_canceled états.
Si le paramètre _Timeout a une valeur autre que la constante COOPERATIVE_TIMEOUT_INFINITE, l’exception operation_timed_out est levée si la durée spécifiée expire avant que l’agent ait terminé sa tâche.