Класс 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.) |
Замечания
Дополнительные сведения см. в разделе "Блоки асинхронных сообщений".
Иерархия наследования
timer
Требования
Заголовок: agents.h
Пространство имен: concurrency
accept_message
Принимает сообщение, которое было предложено этим timer
блоком обмена сообщениями, передавая владельца вызывающему объекту.
virtual message<T>* accept_message(runtime_object_identity _MsgId);
Параметры
_MsgId
Предлагаемый runtime_object_identity
message
объект.
Возвращаемое значение
Указатель на объект, на который вызывающий message
объект теперь имеет право владения.
consume_message
Использует сообщение, которое ранее предлагалось timer
целевым объектом и зарезервировано, передавая владельца вызывающему объекту.
virtual message<T>* consume_message(runtime_object_identity _MsgId);
Параметры
_MsgId
Используемый runtime_object_identity
message
объект.
Возвращаемое значение
Указатель на объект, на который вызывающий message
объект теперь имеет право владения.
Замечания
accept
Аналогично, но всегда предшествует вызовуreserve
.
link_target_notification
Обратный вызов, уведомляющий о том, что новый целевой объект был связан с этим 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_identity
message
объект.
Возвращаемое значение
true
Значение , если сообщение успешно зарезервировано, false
в противном случае.
Замечания
После reserve
вызова, если он возвращается true
, consume
release
либо должен вызываться для принятия или освобождения владения сообщением.
resume_propagation
Возобновляет распространение после освобождения резервирования.
virtual void resume_propagation();
start
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);
Параметры
_Госпожа
Число миллисекунда, которое должно пройти после вызова, которое должно начинаться для распространения указанного сообщения ниже.
значение
Значение, которое будет распространяться вниз по истечении таймера.
_PTarget
Целевой объект, в который таймер будет распространять свое сообщение.
_Повторяющийся
Если значение true, указывает, что таймер периодически будет запускаться каждые _Ms
миллисекунда.
_Планировщик
Объект Scheduler
, в котором запланирована задача распространения для timer
блока обмена сообщениями.
_ScheduleGroup
Объект ScheduleGroup
, в котором запланирована задача распространения для блока обмена сообщениями timer
. Используемый объект Scheduler
подразумевается группой расписаний.
Замечания
Среда выполнения использует планировщик по умолчанию, если вы не указали параметры _Scheduler
или _ScheduleGroup
.
~таймер
Уничтожает timer
блок обмена сообщениями.
~timer();