Partilhar via


Classe agente

Uma classe destinada a ser usada como classe base para todos os agentes independentes. É usado para ocultar o estado de outros agentes e interagir através de passagem de mensagens.

Sintaxe

class agent;

Membros

Construtores Públicos

Nome Description
agent Sobrecarregado. Constrói um agente.
~agente Destruidor Destrói o agente.

Métodos Públicos

Nome Description
cancelar Transfere um agente dos estados agent_created ou agent_runnable para o estado agent_canceled.
start Transfere um agente do estado agent_created para o estado agent_runnable e agenda-o para execução.
Situação Uma fonte síncrona de informação de estado do agente.
status_port Uma fonte assíncrona de informação de estado do agente.
aguarde Espera que um agente complete a sua tarefa.
wait_for_all Espera que todos os agentes especificados cumpram as suas tarefas.
wait_for_one Espera que qualquer um dos agentes especificados complete a sua tarefa.

Métodos Protegidos

Nome Description
Feito Move um agente para o agent_done estado, indicando que o agente completou.
executar Representa a principal tarefa de um agente. run deve ser substituído numa classe derivada e especifica a ação do agente após ser iniciado.

Observações

Para mais informações, consulte Agentes Assíncronos.

Hierarquia de herança

agent

Requerimentos

Cabeçalho: agents.h

Namespace: simultaneidade

agente

Constrói um agente.

agent();

agent(Scheduler& _PScheduler);

agent(ScheduleGroup& _PGroup);

Parâmetros

_PScheduler
O Scheduler objeto dentro do qual a tarefa de execução do agente é agendada.

_PGroup
O ScheduleGroup objeto dentro do qual a tarefa de execução do agente é agendada. O objeto Scheduler usado é implícito pelo grupo de agenda.

Observações

O tempo de execução usa o escalonador padrão se não especificar os parâmetros _PScheduler ou _PGroup.

~agente

Destrói o agente.

virtual ~agent();

Observações

É um erro destruir um agente que não está num estado terminal (ou agent_done ou agent_canceled). Isto pode ser evitado ao esperar que o agente atinja um estado terminal no destruidor de uma classe que herda da agent classe.

cancel

Transfere um agente de um dos estados agent_created ou agent_runnable para o estado agent_canceled.

bool cancel();

Valor de retorno

true Se o agente tenha sido cancelado, false caso contrário. Um agente não pode ser cancelado se já tiver começado a funcionar ou concluído.

done

Move um agente para o agent_done estado, indicando que o agente completou.

bool done();

Valor de retorno

true se o agente for transferido para o agent_done estado, false caso contrário. Um agente que foi cancelado não pode ser transferido para o agent_done estado.

Observações

Este método deve ser chamado no final do método run, quando souber que a execução do seu agente foi terminada.

execução

Representa a principal tarefa de um agente. run deve ser sobrescrito numa classe derivada e especifica o que o agente deve fazer depois de ter sido iniciado.

virtual void run() = 0;

Observações

O estado do agente é alterado para agent_started pouco antes deste método ser invocado. O método deve invocar done no agente com o estado apropriado antes de regressar e pode não lançar quaisquer exceções.

start

Transfere um agente do estado agent_created para o estado agent_runnable e agenda-o para execução.

bool start();

Valor de retorno

true Se o agente começou corretamente, false caso contrário. Um agente que foi cancelado não pode ser iniciado.

estado

Uma fonte síncrona de informação de estado do agente.

agent_status status();

Valor de retorno

Devolve o estado atual do agente. Note que este estado retornado pode mudar imediatamente após ser devolvido.

porta_de_estado

Uma fonte assíncrona de informação de estado do agente.

ISource<agent_status>* status_port();

Valor de retorno

Devolve uma fonte de mensagem que pode enviar mensagens sobre o estado atual do agente.

wait

Espera que um agente complete a sua tarefa.

static agent_status __cdecl wait(
    _Inout_ agent* _PAgent,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parâmetros

_PAgent
Uma indicação para o agente a esperar.

_Timeout
O tempo máximo para esperar, em milissegundos.

Valor de retorno

O agent_status do agente quando o processo de espera termina. Isto pode ser agent_canceled ou .agent_done

Observações

Uma tarefa do agente é concluída quando o agente entra nos estados agent_canceled ou agent_done.

Se o parâmetro _Timeout tiver um valor diferente da constante COOPERATIVE_TIMEOUT_INFINITE, a exceção operation_timed_out é lançada se o tempo especificado expirar antes do agente ter concluído a sua tarefa.

wait_for_all

Espera que todos os agentes especificados cumpram as suas tarefas.

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
O número de ponteiros de agente presentes no array _PAgents.

_PAgents
Uma série de indicações para os agentes a aguardar.

_PStatus
Um apontador para um conjunto de estados de agentes. Cada valor de estado representará o estado do agente correspondente quando o método regressar.

_Timeout
O tempo máximo para esperar, em milissegundos.

Observações

Uma tarefa do agente é concluída quando o agente entra nos estados agent_canceled ou agent_done.

Se o parâmetro _Timeout tiver um valor diferente da constante COOPERATIVE_TIMEOUT_INFINITE, a exceção operation_timed_out é lançada se o tempo especificado expirar antes do agente ter concluído a sua tarefa.

wait_for_one

Espera que qualquer um dos agentes especificados complete a sua tarefa.

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
O número de ponteiros de agente presentes no array _PAgents.

_PAgents
Uma série de indicações para os agentes a aguardar.

_Status
Uma referência a uma variável onde será colocado o estado do agente.

_Index
Uma referência a uma variável onde será colocado o índice do agente.

_Timeout
O tempo máximo para esperar, em milissegundos.

Observações

Uma tarefa do agente é concluída quando o agente entra nos estados agent_canceled ou agent_done.

Se o parâmetro _Timeout tiver um valor diferente da constante COOPERATIVE_TIMEOUT_INFINITE, a exceção operation_timed_out é lançada se o tempo especificado expirar antes do agente ter concluído a sua tarefa.

Consulte também

concorrência Namespace