Compartilhar via


Classe timer

Um bloco de mensagens timer é um source_block de destino único capaz de enviar uma mensagem para seu destino após um período especificado ter se passado ou a 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 das mensagens de saída deste bloco.

Membros

Construtores públicos

Nome Descrição
timer Sobrecarregado. Constrói um bloco de mensagens timer que disparará uma determinada mensagem após um intervalo especificado.
Destruidor ~timer Destrói um bloco de mensagens timer.

Métodos públicos

Nome Descrição
pause Interrompe o bloco de mensagens timer. Se for um bloco de mensagens timer repetido, ele poderá ser reiniciado com uma chamada subsequente a start(). Para temporizadores não repetitivos, isso tem o mesmo efeito que uma chamada a stop.
start Inicia o bloco de mensagens timer. Decorrido o número especificado de milissegundos depois que isso for chamado, o valor especificado será propagado downstream como um message.
parar Interrompe o bloco de mensagens timer.

Métodos protegidos

Nome Descrição
accept_message Aceita uma mensagem que foi oferecida por esse bloco de mensagens timer, transferindo a propriedade para o chamador.
consume_message Consome uma mensagem oferecida anteriormente pelo timer e reservada pelo destino, transferindo a titularidade ao chamador.
notificação_de_destino_de_link Um callback que notifica que um novo destino foi vinculado a este bloco de mensagens timer.
propagate_to_any_targets Tenta oferecer a mensagem produzida pelo bloco timer a todos os destinos vinculados.
mensagem_de_lançamento Libera uma reserva de mensagem anterior. (Substitui source_block::release_message.)
reserve_message Reserva uma mensagem oferecida anteriormente por este bloco de mensagens timer. (Substitui source_block::reserve_message.)
resume_propagation Retoma a propagação depois que uma reserva é liberada. (Sobrescreve source_block::resume_propagation.)

Comentários

Para mais informações, confira Blocos de mensagens assíncronas.

Hierarquia de herança

ISource

source_block

timer

Requisitos

Cabeçalho: agents.h

Namespace: simultaneidade

aceitar_mensagem

Aceita uma mensagem que foi oferecida por esse bloco de mensagens timer, transferindo a propriedade para o chamador.

virtual message<T>* accept_message(runtime_object_identity _MsgId);

Parâmetros

_MsgId
O runtime_object_identity do objeto message oferecido.

Valor de retorno

Um ponteiro para o objeto message do qual o chamador agora tem propriedade.

consumir_mensagem

Consome uma mensagem oferecida anteriormente pelo timer e reservada pelo destino, transferindo a titularidade ao chamador.

virtual message<T>* consume_message(runtime_object_identity _MsgId);

Parâmetros

_MsgId
O runtime_object_identity do objeto message que está sendo consumido.

Valor de retorno

Um ponteiro para o objeto message do qual o chamador agora tem propriedade.

Comentários

Semelhante a accept, mas é sempre precedido por uma chamada para reserve.

Um callback que notifica que um novo destino foi vinculado a este bloco de mensagens timer.

virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);

Parâmetros

_PTarget
Um ponteiro para o destino recém-vinculado.

pausar

Interrompe o bloco de mensagens timer. Se for um bloco de mensagens timer repetido, ele poderá ser reiniciado com uma chamada subsequente a start(). Para temporizadores não repetitivos, isso tem o mesmo efeito que uma chamada a stop.

void pause();

propagate_to_any_targets

Tenta oferecer a mensagem produzida pelo bloco timer a todos os destinos vinculados.

virtual void propagate_to_any_targets(_Inout_opt_ message<T> *);

mensagem_de_lançamento

Libera uma reserva de mensagem anterior.

virtual void release_message(runtime_object_identity _MsgId);

Parâmetros

_MsgId
O runtime_object_identity do objeto message que está para ser liberado.

mensagem_reserva

Reserva uma mensagem oferecida anteriormente por este bloco de mensagens timer.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parâmetros

_MsgId
O runtime_object_identity do objeto message que está sendo reservado.

Valor de retorno

true se a mensagem foi reservada com sucesso; caso contrário, false.

Comentários

Depois de reserve ser chamado, se ele retornar true, consume ou release deverá ser chamado para assumir ou liberar a propriedade da mensagem.

resume_propagation

Retoma a propagação depois que uma reserva é liberada.

virtual void resume_propagation();

iniciar

Inicia o bloco de mensagens timer. Decorrido o número especificado de milissegundos depois que isso for chamado, o valor especificado será propagado downstream como um message.

void start();

parar

Interrompe o bloco de mensagens timer.

void stop();

temporizador

Constrói um bloco de mensagens timer que disparará uma determinada 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 se passar após o início da chamada para que a mensagem especificada seja propagada downstream.

value
O valor que será propagado a jusante quando o temporizador terminar.

_PTarget
O destino para o qual o temporizador propagará sua mensagem.

_Repetindo
Se verdadeiro, indica que o temporizador será acionado periodicamente a cada _Ms milissegundos.

_Scheduler
O objeto Scheduler no qual a tarefa de propagação do bloco timer de mensagens está agendada.

_GrupoDeAgendamento
O objeto ScheduleGroup no qual a tarefa de propagação do bloco de mensagens timer está agendada. O objeto Scheduler usado é implicado pelo grupo de agendamento.

Comentários

O runtime usará o agendador padrão se você não especificar os parâmetros _Scheduler ou _ScheduleGroup.

~temporizador

Destrói um bloco de mensagens timer.

~timer();

Confira também

Namespace de concorrência