Поделиться через


Класс 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.
стоп Останавливает блок обмена сообщениями timer.

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

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

Замечания

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

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

ISource

source_block

timer

Требования

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

Пространство имен: конкурентность

принять_сообщение

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

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

Параметры

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

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

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

потребить_сообщение

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

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

Параметры

_MsgId
runtime_object_identity объекта message, который используется.

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

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

Замечания

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

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

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

Параметры

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

пауза

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

void pause();

распроcтранить_на_любые_цели

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

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

сообщение о выпуске

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

virtual void release_message(runtime_object_identity _MsgId);

Параметры

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

сообщение_о_резервировании

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

virtual bool reserve_message(runtime_object_identity _MsgId);

Параметры

_MsgId
runtime_object_identity объекта message, который резервируется.

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

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

Замечания

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

возобновить_распространение

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

virtual void resume_propagation();

начало

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

void start();

стоп

Останавливает блок обмена сообщениями 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);

Параметры

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

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

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

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

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

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

Замечания

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

~таймер

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

~timer();

См. также

Пространство имен параллелизм