![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
basic_waitable_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_waitable_timer
предоставляет возможность выполнять блокировку или асинхронное ожидание истечения срока действия таймера.
Ожидаемый таймер всегда находится в одном из двух состояний: «выжил» или «не истек». Если функция wait()
или async_wait()
называется на просроченном таймере, операция ожидания будет завершена немедленно.
В большинстве приложений будет использоваться один из steady_timer
, система_timer
или хай_разрешение_таймер
Типdefs.
Эта подходящая функция таймера предназначена для использования с C++11 стандартной библиотекой <chrono>
или с Boost. Библиотека Хроно.
Distinct объекты: Безопасно.
Составлено объекты: Небезопасны.
Выполнение блокировки ожидания (C++11):
// Construct a timer without setting an expiry time. boost::asio::steady_timer timer(io_service); // Set an expiry time relative to now. timer.expires_from_now(std::chrono::seconds(5)); // Wait for the timer to expire. timer.wait();
Выполнение асинхронного ожидания (C++11):
void handler(const boost::system::error_code& error) { if (!error) { // Timer expired. } } ... // Construct a timer with an absolute expiry time. boost::asio::steady_timer timer(io_service, std::chrono::steady_clock::now() + std::chrono::seconds(60)); // 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_waitable_timer::expires_from_now()
функция отменяет любые ожидающие асинхронные ожидания и возвращает количество асинхронных ожидания, которые были отменены. Если он возвращает 0, то вы были слишком поздно, и официант уже был казнен или вскоре будет казнен. Если он возвращает 1, то официант был успешно отменен.boost::asio::error::operation_aborted
.Здитель: >boost/asio/basic_waitable_timer.hpp
Заголовок: boost/asio.hpp
Статья basic_waitable_timer раздела Boost.Asio Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |