![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
deadline_timerBoost , Boost.Asio , Reference
|
Имя |
Описание |
---|---|
Тип продолжительности. |
|
Основной тип реализации объекта I/O. |
|
Тип сервиса, который будет использоваться для обеспечения операций I/O. |
|
Тип времени. |
|
Тип признаков времени. |
Имя |
Описание |
---|---|
Начните асинхронное ожидание на таймере. |
|
Конструктор. Конструктор устанавливает определенное время истечения срока действия как абсолютное время. Конструктор должен установить определенное время истечения срока действия по отношению к настоящему времени. |
|
Отменить любые асинхронные операции, которые ждут на таймере. |
|
Отменяет одну асинхронную операцию, которая ждет на таймере. |
|
Получить время истечения срока действия таймера как абсолютное время. Установите время истечения срока действия таймера как абсолютное время. |
|
Время истечения срока действия таймера по отношению к настоящему времени. Установите время истечения срока действия таймера по отношению к настоящему времени. |
|
Получить io_сервис, связанный с объектом. |
|
Выполняйте блокирующее ожидание на таймере. |
Имя |
Описание |
---|---|
Получить основную реализацию объекта I/O. |
|
Получить услугу, связанную с объектом I/O. |
Имя |
Описание |
---|---|
(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. |
|
(Deprecated: Use get_service(). Сервис, связанный с объектом I/O. |
basic_deadline_timer
шаблон класса предоставляет возможность выполнять блокировку или асинхронное ожидание истечения таймера.
Срок таймер всегда в одном из двух состояний: «выжил» или «не истек». Если функция wait()
или async_wait()
называется на просроченном таймере, операция ожидания будет завершена немедленно.
Большинство приложений будет использовать deadline_timer
typedef.
Distinct объекты: Безопасно.
Составлено объекты: Небезопасны.
Выполнение блокировки ожидания:
// Construct a timer without setting an expiry time. boost::asio::deadline_timer timer(io_service); // Set an expiry time relative to now. timer.expires_from_now(boost::posix_time::seconds(5)); // Wait for the timer to expire. timer.wait();
Выполнение асинхронного ожидания:
void handler(const boost::system::error_code& error) { if (!error) { // Timer expired. } } ... // Construct a timer with an absolute expiry time. boost::asio::deadline_timer timer(io_service, boost::posix_time::time_from_string("2005-12-07 23:59:59.000")); // Start an asynchronous wait. timer.async_wait(handler);
Изменение времени истечения срока действия таймера во время ожидания асинхронного ожидания приводит к отмене этих операций ожидания. Для обеспечения того, чтобы действие, связанное с таймером, выполнялось только один раз, используйте что-то подобное:
void on_some_event() { if (my_timer.expires_from_now(seconds(5)) > 0) { // We managed to cancel the timer. Start new asynchronous wait. my_timer.async_wait(on_timeout); } else { // Too late, timer has already expired! } } void on_timeout(const boost::system::error_code& e) { if (e != boost::asio::error::operation_aborted) { // Timer was not cancelled, take necessary action. } }
boost::asio::basic_deadline_timer::expires_from_now()
функция отменяет любые ожидающие асинхронные ожидания и возвращает количество асинхронных ожидания, которые были отменены. Если он возвращает 0, то вы были слишком поздно, и официант уже был казнен или вскоре будет казнен. Если он возвращает 1, то официант был успешно отменен.boost::asio::error::operation_aborted
.Здрайвер: >boost/asio/deadline_timer.hpp
Заголовок: boost/asio.hpp
Статья deadline_timer раздела Boost.Asio Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |