![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
system_timerBoost , Boost.Asio , Reference
|
Имя |
Описание |
---|---|
Тип часов. |
|
Тип часов. |
|
Основной тип реализации объекта ввода/вывода. |
|
Тип службы, которая будет использоваться для обеспечения операций ввода-вывода. |
|
Тип часов. |
|
Тип ожидания. |
Имя |
Описание |
---|---|
Начните асинхронное ожидание на таймере. |
|
Конструктор. Конструктор устанавливает конкретный срок истечения как абсолютное время. Конструктор устанавливает конкретный срок годности по отношению к настоящему моменту. |
|
Отменить любые асинхронные операции, ожидающие на таймере. |
|
Отменяет одну асинхронную операцию, ожидающую на таймере. |
|
Получить время истечения таймера как абсолютное время. Установите время истечения таймера как абсолютное время. |
|
Получить время истечения таймера относительно сейчас. Установите время истечения таймера относительно сейчас. |
|
Получить услугу io_, связанную с объектом. |
|
Выполните блокирующее ожидание на таймере. |
Имя |
Описание |
---|---|
Получить основную реализацию объекта ввода/вывода. |
|
Получить услугу, связанную с объектом ввода/вывода. |
Имя |
Описание |
---|---|
(Использовать get_implementation()) Основная реализация объекта ввода/вывода. |
|
(Использовать get_service()) Услуга, связанная с объектом ввода/вывода. |
Шаблон классов<basic_waitable_timer
>обеспечивает возможность выполнения блокирующего или асинхронного ожидания истечения таймера.
Ожидаемый таймер всегда находится в одном из двух состояний: «истечен» или «не истек». Если функция<wait()
>или<async_wait()
>вызывается на просроченный таймер, операция ожидания завершается немедленно.
Большинство приложений будут использовать один из<steady_timer
>,<system_timer
>или<high_resolution_timer
>типдефов.
Эта функция выжидательного таймера предназначена для использования со стандартной библиотекой C++11<<chrono>
>или с Boost. Библиотека Хроно.
Отличиеобъекты:Сейф.
Общийобъекты:небезопасны.
Выполнение ожидания блокировки (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
>.В этом типдефе используется стандартная библиотека C++11<<chrono>
>. В противном случае он может использовать бустер. Библиотека Хроно. Явно использовать Boost. Хроно, используйте<basic_waitable_timer
>шаблон непосредственно:
typedef basic_waitable_timer<boost::chrono::system_clock> timer;
Заголовок:<boost/asio/system_timer.hpp
>
Удобный заголовок:Никто
Статья system_timer раздела Boost.Asio Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |