agent (Clase)
Una clase diseñada para usarse como una clase base para todos los agentes independientes. Se usa para ocultar el estado de otros agentes e interactuar con el paso de mensajes.
Sintaxis
class agent;
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
agent | Con sobrecarga. Construye un agente. |
~agent Destructor | Destruye el agente. |
Métodos públicos
Nombre | Descripción |
---|---|
cancel | Mueve un agente de los estados agent_created o agent_runnable al estado agent_canceled . |
start | Mueve un agente del estado agent_created al estado agent_runnable y lo programa para su ejecución. |
status | Un origen sincrónico de información de estado del agente. |
status_port | Un origen asincrónico de información de estado del agente. |
wait | Espera a que un agente complete su tarea. |
wait_for_all | Espera a que todos los agentes especificados completen sus tareas. |
wait_for_one | Espera a que cualquiera de los agentes especificados complete su tarea. |
Métodos protegidos
Nombre | Descripción |
---|---|
done | Mueve un agente al estado agent_done , lo que indica que el agente se ha completado. |
run | Representa la tarea principal de un agente. run debe invalidarse en una clase derivada y especifica lo que debe hacer el agente después de que se haya iniciado. |
Comentarios
Para más información, consulte Agentes asincrónicos.
Jerarquía de herencia
agent
Requisitos
Encabezado: agents.h
Espacio de nombres: simultaneidad
agente
Construye un agente.
agent();
agent(Scheduler& _PScheduler);
agent(ScheduleGroup& _PGroup);
Parámetros
_PScheduler
El objeto Scheduler
en el que se programa la tarea de ejecución del agente.
_PGroup
El objeto ScheduleGroup
en el que se programa la tarea de ejecución del agente. El objeto Scheduler
utilizado está implícito en el grupo de programación.
Comentarios
El runtime usa el programador predeterminado si no se especifican los parámetros _PScheduler
o _PGroup
.
~agente
Destruye el agente.
virtual ~agent();
Comentarios
Es un error destruir un agente que no está en un estado terminal (ya sea agent_done
o agent_canceled
). Esto se puede evitar esperando a que el agente llegue a un estado terminal en el destructor de una clase que hereda de la clase agent
.
cancel
Mueve un agente de los estados agent_created
o agent_runnable
al estado agent_canceled
.
bool cancel();
Valor devuelto
true
si se ha cancelado el agente; de lo contrario, false
. No se puede cancelar un agente si ya se ha iniciado la ejecución o ya se ha completado.
done
Mueve un agente al estado agent_done
, lo que indica que el agente se ha completado.
bool done();
Valor devuelto
true
si el agente se mueve al estado agent_done
; de lo contrario, false
. Un agente que se ha cancelado no se puede mover al estado agent_done
.
Comentarios
Se debe llamar a este método al final del método run
cuando sepa que se ha completado la ejecución del agente.
run
Representa la tarea principal de un agente. run
debe invalidarse en una clase derivada y especifica lo que debe hacer el agente después de que se haya iniciado.
virtual void run() = 0;
Comentarios
El estado del agente se cambia a la agent_started
justo antes de invocar este método. El método debe invocar a done
en el agente con un estado adecuado antes de devolver un resultado y no puede producir ninguna excepción.
start
Mueve un agente del estado agent_created
al estado agent_runnable
y lo programa para su ejecución.
bool start();
Valor devuelto
true
si el agente se inició correctamente; de lo contrario, false
. No se puede iniciar un agente que se ha cancelado.
status
Un origen sincrónico de información de estado del agente.
agent_status status();
Valor devuelto
Guarda el estado actual del agente. Tenga en cuenta que este estado devuelto podría cambiar inmediatamente después de devolverse.
status_port
Un origen asincrónico de información de estado del agente.
ISource<agent_status>* status_port();
Valor devuelto
Devuelve un origen de mensaje que puede enviar mensajes sobre el estado actual del agente.
wait
Espera a que un agente complete su tarea.
static agent_status __cdecl wait(
_Inout_ agent* _PAgent,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parámetros
_PAgent
Un puntero al agente que se esperará.
_Timeout
El tiempo máximo durante el cual se esperará, en milisegundos.
Valor devuelto
El agent_status
del agente cuando se completa la espera. Esto puede ser agent_canceled
o agent_done
.
Comentarios
Una tarea del agente se completa cuando el agente entra en los estados agent_canceled
o agent_done
.
Si el parámetro _Timeout
tiene un valor distinto de la constante COOPERATIVE_TIMEOUT_INFINITE
, se produce la excepción operation_timed_out si la cantidad de tiempo especificada expira antes de que el agente haya completado su tarea.
wait_for_all
Espera a que todos los agentes especificados completen sus tareas.
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);
Parámetros
count
El número de punteros de agente presentes en la matriz _PAgents
.
_PAgents
Una matriz de punteros a los agentes que se esperarán.
_PStatus
Un puntero a una matriz de estados de agente. Cada valor de estado representará el estado del agente correspondiente cuando el método devuelva un resultado.
_Timeout
El tiempo máximo durante el cual se esperará, en milisegundos.
Comentarios
Una tarea del agente se completa cuando el agente entra en los estados agent_canceled
o agent_done
.
Si el parámetro _Timeout
tiene un valor distinto de la constante COOPERATIVE_TIMEOUT_INFINITE
, se produce la excepción operation_timed_out si la cantidad de tiempo especificada expira antes de que el agente haya completado su tarea.
wait_for_one
Espera a que cualquiera de los agentes especificados complete su tarea.
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);
Parámetros
count
El número de punteros de agente presentes en la matriz _PAgents
.
_PAgents
Una matriz de punteros a los agentes que se esperarán.
_Status
Una referencia a una variable donde se colocará el estado del agente.
_Index
Una referencia a una variable donde se colocará el índice del agente.
_Timeout
El tiempo máximo durante el cual se esperará, en milisegundos.
Comentarios
Una tarea del agente se completa cuando el agente entra en los estados agent_canceled
o agent_done
.
Si el parámetro _Timeout
tiene un valor distinto de la constante COOPERATIVE_TIMEOUT_INFINITE
, se produce la excepción operation_timed_out si la cantidad de tiempo especificada expira antes de que el agente haya completado su tarea.