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

agent

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.

Consulte también

concurrency (espacio de nombres)