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.
Um timer bloco de mensagens é um alvo source_block único capaz de enviar uma mensagem ao seu destino após um período de tempo especificado ter decorrido ou em intervalos específicos.
Sintaxe
template<class T>
class timer : public Concurrency::details::_Timer, public source_block<single_link_registry<ITarget<T>>>;
Parâmetros
T
O tipo de carga útil das mensagens de saída deste bloco.
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| temporizador | Sobrecarregado. Constrói um timer bloco de mensagens que irá disparar uma dada mensagem após um intervalo especificado. |
| ~temporizador Destruidor | Destrói um timer bloqueio de mensagens. |
Métodos Públicos
| Nome | Description |
|---|---|
| pause | Interrompe o bloqueador de timer mensagens. Se se tratar de um bloco de mensagens recorrente, este pode ser reiniciado com uma chamada subsequente start(). Para temporizadores não repetitivos, isto tem o mesmo efeito que uma stop chamada. |
| start | Começa o timer bloqueio de mensagens. O número especificado de milissegundos após isto ser chamado, o valor especificado será propagado a jusante como um message. |
| parar | Interrompe o bloqueador de timer mensagens. |
Métodos Protegidos
| Nome | Description |
|---|---|
| accept_message | Aceita uma mensagem oferecida por este timer bloco de mensagens, transferindo a propriedade para o chamador. |
| consume_message | Consome uma mensagem anteriormente oferecida pelo timer e reservada pelo destinatário, transferindo a posse para o chamador. |
| link_target_notification | Um callback que notifica que um novo alvo foi ligado a este timer bloco de mensagens. |
| propagate_to_any_targets | Oferece a mensagem produzida pelo bloco timer para todos os alvos vinculados. |
| release_message | Liberta uma reserva de mensagem prévia. (Sobrescreve source_block::release_message.) |
| mensagem_de_reserva | Reserva uma mensagem anteriormente oferecida por este timer bloco de mensagens. (Substitui source_block::reserve_message.) |
| resume_propagation | Retoma a propagação após a libertação de uma reserva. (Substitui source_block::resume_propagation.) |
Observações
Para mais informações, consulte Blocos de Mensagens Assíncronas.
Hierarquia de herança
timer
Requerimentos
Cabeçalho: agents.h
Namespace: simultaneidade
aceitar_mensagem
Aceita uma mensagem oferecida por este timer bloco de mensagens, transferindo a propriedade para o chamador.
virtual message<T>* accept_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do objeto oferecido message .
Valor de retorno
Um apontador para o message objeto do qual o chamador agora é proprietário.
consumir_mensagem
Consome uma mensagem anteriormente oferecida pelo timer e reservada pelo alvo, transferindo a posse para o chamador.
virtual message<T>* consume_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do message objeto que está a ser consumido.
Valor de retorno
Um apontador para o message objeto do qual o chamador agora é proprietário.
Observações
Semelhante a accept, mas é sempre precedido por uma chamada para reserve.
notificação_de_destino_de_link
Um callback que notifica que um novo alvo foi ligado a este timer bloco de mensagens.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parâmetros
_PTarget
Um apontador para o alvo recém-ligado.
colocar em pausa
Interrompe o bloco de mensagens timer. Se se tratar de um bloco de mensagens recorrente, este pode ser reiniciado com uma chamada subsequente start(). Para temporizadores não repetitivos, isto tem o mesmo efeito que uma stop chamada.
void pause();
propagar_para_quaisquer_destinos
Oferece a mensagem produzida pelo bloco timer para todos os alvos vinculados.
virtual void propagate_to_any_targets(_Inout_opt_ message<T> *);
mensagem de lançamento
Liberta uma reserva de mensagem prévia.
virtual void release_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do objeto message que está a ser libertado.
mensagem_de_reserva
Reserva uma mensagem anteriormente oferecida por este timer bloco de mensagens.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do message objeto que está a ser reservado.
Valor de retorno
true se a mensagem foi reservada com sucesso, false caso contrário.
Observações
Depois reserve é chamado, se devolver true, ou consume ou release deve ser chamado para assumir ou libertar a propriedade da mensagem.
resume_propagation
Retoma a propagação após a libertação de uma reserva.
virtual void resume_propagation();
start
Começa o timer bloqueio de mensagens. O número especificado de milissegundos após isto ser chamado, o valor especificado será propagado a jusante como um message.
void start();
pare
Interrompe o bloqueador de timer mensagens.
void stop();
temporizador
Constrói um timer bloco de mensagens que irá disparar uma dada mensagem após um intervalo especificado.
timer(
unsigned int _Ms,
T const& value,
ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
timer(
Scheduler& _Scheduler,
unsigned int _Ms,
T const& value,
_Inout_opt_ ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
timer(
ScheduleGroup& _ScheduleGroup,
unsigned int _Ms,
T const& value,
_Inout_opt_ ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
Parâmetros
_Ms
O número de milissegundos que devem decorrer após o início da chamada para que a mensagem especificada seja propagada a jusante.
value
O valor que será propagado a jusante quando o temporizador expirar.
_PTarget
O alvo para o qual o temporizador irá propagar a sua mensagem.
_Repetindo
Se for verdade, indica que o temporizador irá disparar periodicamente a cada _Ms milissegundos.
_Scheduler
O Scheduler objeto dentro do qual a tarefa de propagação para o timer bloco de mensagens é agendada.
_ScheduleGroup
O objeto ScheduleGroup no qual a tarefa de propagação para o bloco de mensagens timer está 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 _Scheduler ou _ScheduleGroup.
~temporizador
Destrói um timer bloqueio de mensagens.
~timer();