Класс timer

Блок обмена сообщениями timer — это блок source_block с одной целью, который может отправлять сообщение своей цели по истечении указанного периода времени или через заданные интервалы времени.

Синтаксис

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

Параметры

T
Тип полезных данных выходных сообщений этого блока.

Участники

Открытые конструкторы

Имя Описание
Таймер Перегружен. timer Создает блок обмена сообщениями, который будет запускать заданное сообщение после указанного интервала.
Деструктор ~timer Уничтожает timer блок обмена сообщениями.

Открытые методы

Имя Описание
pause timer Останавливает блок обмена сообщениями. Если это повторяющийся timer блок обмена сообщениями, его можно перезапустить с последующим start() вызовом. Для не повторяющихся таймеров это имеет тот же эффект, что stop и вызов.
Начало timer Запускает блок обмена сообщениями. Указанное число миллисекунда после вызова, указанное значение будет распространяться вниз в виде message.
stop timer Останавливает блок обмена сообщениями.

Защищенные методы

Имя Описание
accept_message Принимает сообщение, которое было предложено этим timer блоком обмена сообщениями, передавая владельца вызывающему объекту.
consume_message Использует сообщение, которое ранее предлагалось timer целевым объектом и зарезервировано, передавая владельца вызывающему объекту.
link_target_notification Обратный вызов, уведомляющий о том, что новый целевой объект был связан с этим timer блоком обмена сообщениями.
propagate_to_any_targets Пытается предложить сообщение, созданное блоком timer для всех связанных целевых объектов.
release_message Освобождает предыдущее резервирование сообщений. (Переопределяет source_block::release_message.)
reserve_message Резервирует сообщение, ранее предлагаемое этим timer блоком обмена сообщениями. (Переопределяет source_block::reserve_message.)
resume_propagation Возобновляет распространение после освобождения резервирования. (Переопределяет source_block::resume_propagation.)

Замечания

Дополнительные сведения см. в разделе "Блоки асинхронных сообщений".

Иерархия наследования

ISource

source_block

timer

Требования

Заголовок: agents.h

Пространство имен: concurrency

accept_message

Принимает сообщение, которое было предложено этим timer блоком обмена сообщениями, передавая владельца вызывающему объекту.

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

Параметры

_MsgId
Предлагаемый runtime_object_identitymessage объект.

Возвращаемое значение

Указатель на объект, на который вызывающий message объект теперь имеет право владения.

consume_message

Использует сообщение, которое ранее предлагалось timer целевым объектом и зарезервировано, передавая владельца вызывающему объекту.

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

Параметры

_MsgId
Используемый runtime_object_identitymessage объект.

Возвращаемое значение

Указатель на объект, на который вызывающий message объект теперь имеет право владения.

Замечания

acceptАналогично, но всегда предшествует вызовуreserve.

Обратный вызов, уведомляющий о том, что новый целевой объект был связан с этим timer блоком обмена сообщениями.

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

Параметры

_PTarget
Указатель на новый связанный целевой объект.

pause

timer Останавливает блок обмена сообщениями. Если это повторяющийся timer блок обмена сообщениями, его можно перезапустить с последующим start() вызовом. Для не повторяющихся таймеров это имеет тот же эффект, что stop и вызов.

void pause();

propagate_to_any_targets

Пытается предложить сообщение, созданное блоком timer для всех связанных целевых объектов.

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

release_message

Освобождает предыдущее резервирование сообщений.

virtual void release_message(runtime_object_identity _MsgId);

Параметры

_MsgId
Объект runtime_object_identity , message который освобождается.

reserve_message

Резервирует сообщение, ранее предлагаемое этим timer блоком обмена сообщениями.

virtual bool reserve_message(runtime_object_identity _MsgId);

Параметры

_MsgId
Зарезервированный runtime_object_identitymessage объект.

Возвращаемое значение

true Значение , если сообщение успешно зарезервировано, false в противном случае.

Замечания

После reserve вызова, если он возвращается true, consumerelease либо должен вызываться для принятия или освобождения владения сообщением.

resume_propagation

Возобновляет распространение после освобождения резервирования.

virtual void resume_propagation();

начало

timer Запускает блок обмена сообщениями. Указанное число миллисекунда после вызова, указанное значение будет распространяться вниз в виде message.

void start();

stop

timer Останавливает блок обмена сообщениями.

void stop();

таймер

timer Создает блок обмена сообщениями, который будет запускать заданное сообщение после указанного интервала.

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

Параметры

_Ms
Число миллисекунда, которое должно пройти после вызова, которое должно начинаться для распространения указанного сообщения ниже.

значение
Значение, которое будет распространяться вниз по истечении таймера.

_PTarget
Целевой объект, в который таймер будет распространять свое сообщение.

_Повторять
Если значение true, указывает, что таймер периодически будет запускаться каждые _Ms миллисекунда.

_Планировщик
Объект Scheduler , в котором запланирована задача распространения для timer блока обмена сообщениями.

_ScheduleGroup
Объект ScheduleGroup , в котором запланирована задача распространения для блока обмена сообщениями timer . Используемый объект Scheduler подразумевается группой расписаний.

Замечания

Среда выполнения использует планировщик по умолчанию, если вы не указали параметры _Scheduler или _ScheduleGroup .

~Таймер

Уничтожает timer блок обмена сообщениями.

~timer();

См. также

Пространство имен concurrency