Clase timer

Un bloque de mensajería timer es un bloque source_block con destino único, capaz de enviar un mensaje a su destino cuando un período de tiempo especificado ha transcurrido o en intervalos concretos.

Sintaxis

template<class T>
class timer : public Concurrency::details::_Timer, public source_block<single_link_registry<ITarget<T>>>;

Parámetros

T
El tipo de carga de los mensajes de salida de este bloque.

Miembros

Constructores públicos

Nombre Descripción
timer Con sobrecarga. Construye un bloque de mensajería timer que activará un mensaje determinado después de un intervalo especificado.
~timer Destructor Destruye un bloque de mensajería timer.

Métodos públicos

Nombre Descripción
pause Detiene el bloque de mensajería timer. Si se trata de un bloque de mensajería repetido timer, se puede reiniciar con una llamada posterior a start(). En el caso de los temporizadores no repetidos, esto tiene el mismo efecto que una llamada a stop.
start Inicia el bloque de mensajería timer. Tras el número especificado de milisegundos luego de llamar a esto, el valor especificado se propagará de bajada como message.
stop Detiene el bloque de mensajería timer.

Métodos protegidos

Nombre Descripción
accept_message Acepta un mensaje ofrecido por este bloque de mensajería timer y transfiere la propiedad al autor de la llamada.
consume_message Consume un mensaje ofrecido previamente por el bloque de mensajería timer y reservado por el destino, y transfiere la propiedad al autor de la llamada.
link_target_notification Devolución de llamada que notifica que se ha vinculado un nuevo destino a este bloque de mensajería timer.
propagate_to_any_targets Intenta ofrecer el mensaje generado por el bloque timer a todos los destinos vinculados.
release_message Libera una reserva de mensajes anterior. (Invalida source_block::release_message).
reserve_message Reserva un mensaje ofrecido anteriormente por este bloque de mensajería timer. (Invalida source_block::reserve_message).
resume_propagation Reanuda la propagación después de que se haya liberado una reserva. (Invalida source_block::resume_propagation).

Comentarios

Para obtener más información, consulte Bloques de mensajes asincrónicos.

Jerarquía de herencia

ISource

source_block

timer

Requisitos

Encabezado: agents.h

Espacio de nombres: simultaneidad

accept_message

Acepta un mensaje ofrecido por este bloque de mensajería timer y transfiere la propiedad al autor de la llamada.

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

Parámetros

_MsgId
El valor runtime_object_identity del objeto message ofrecido.

Valor devuelto

Puntero al objeto message del que el autor de la llamada tiene ahora la propiedad.

consume_message

Consume un mensaje ofrecido previamente por el bloque de mensajería timer y reservado por el destino, y transfiere la propiedad al autor de la llamada.

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

Parámetros

_MsgId
Valor runtime_object_identity del objeto message que se consumirá.

Valor devuelto

Puntero al objeto message del que el autor de la llamada tiene ahora la propiedad.

Comentarios

Es similar a accept, pero siempre va precedido de una llamada a reserve.

Devolución de llamada que notifica que se ha vinculado un nuevo destino a este bloque de mensajería timer.

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

Parámetros

_PTarget
Puntero al destino recién vinculado.

pause

Detiene el bloque de mensajería timer. Si se trata de un bloque de mensajería repetido timer, se puede reiniciar con una llamada posterior a start(). En el caso de los temporizadores no repetidos, esto tiene el mismo efecto que una llamada a stop.

void pause();

propagate_to_any_targets

Intenta ofrecer el mensaje generado por el bloque timer a todos los destinos vinculados.

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

release_message

Libera una reserva de mensajes anterior.

virtual void release_message(runtime_object_identity _MsgId);

Parámetros

_MsgId
El valor runtime_object_identity del objeto message que se libera.

reserve_message

Reserva un mensaje ofrecido anteriormente por este bloque de mensajería timer.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parámetros

_MsgId
El runtime_object_identity del objeto message que se está reservando.

Valor devuelto

true si se ha reservado correctamente el mensaje; de lo contrario, false.

Comentarios

Después de llamar a reserve, si devuelve true, se debe llamar a consume o release para aceptar o liberar la propiedad del mensaje.

resume_propagation

Reanuda la propagación después de que se haya liberado una reserva.

virtual void resume_propagation();

start

Inicia el bloque de mensajería timer. Tras el número especificado de milisegundos luego de llamar a esto, el valor especificado se propagará de bajada como message.

void start();

stop

Detiene el bloque de mensajería timer.

void stop();

timer

Construye un bloque de mensajería timer que activará un mensaje determinado después de un 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
El número de milisegundos que deben transcurrir después de que se inicie la llamada para que el mensaje especificado se propague de bajada.

value
El valor que se propagará de bajada cuando se agote el temporizador.

_PTarget
El destino al que el temporizador propagará su mensaje.

_Repeating
Si es true, indica que el temporizador se activará periódicamente cada _Ms milisegundos.

_Scheduler
El objeto Scheduler en el que se programa la tarea de propagación para el bloque de mensajería timer.

_ScheduleGroup
El objeto ScheduleGroup dentro del que se programa la tarea de propagación para el bloque de mensajería timer . El objeto Scheduler utilizado está implícito en el grupo de programación.

Comentarios

El runtime usa el programador predeterminado si no se especifican los parámetros _Scheduler o _ScheduleGroup .

~temporizador

Destruye un bloque de mensajería timer.

~timer();

Consulte también

concurrency (espacio de nombres)