Partager via


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_createdagent_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.
Attendre 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_doneagent_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_createdagent_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.

Exécuter

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.

Voir aussi

accès concurrentiel Namespace