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 conteúdo das mensagens de saída desse 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.
stop 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 propriedade para o chamador.
link_target_notification Um retorno de chamada que notifica que um novo destino foi vinculado a esse bloco de mensagens timer.
propagate_to_any_targets Tenta oferecer a mensagem produzida pelo bloco timer a todos os destinos vinculados.
release_message 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. (Substitui 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: concurrency

accept_message

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 Devolução

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

consume_message

Consome uma mensagem oferecida anteriormente pelo timer e reservada pelo destino, transferindo a propriedade para o 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 Devolução

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 retorno de chamada que notifica que um novo destino foi vinculado a esse bloco de mensagens timer.

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

Parâmetros

_PTarget
Um ponteiro para o destino que acaba de ser vinculado.

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.

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> *);

release_message

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á sendo liberado.

reserve_message

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 Devolução

true se a mensagem foi reservada com êxito; 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();

stop

Interrompe o bloco de mensagens timer.

void stop();

timer

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 downstream quando o temporizador terminar.

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

_Repeating
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.

_ScheduleGroup
O objeto ScheduleGroup no qual a tarefa de propagação do bloco de mensagens timer está agendada. O objeto Scheduler usado é implícito pelo grupo agendado.

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 simultaneidade