agent, classe
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.