Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.