Эта учебная программа вводит asio, показывая, как выполнить блокирующее ожидание на таймере.
Мы начинаем с включения необходимых файлов заголовка.
Все классы асио можно использовать, просто включив«asio.hpp».
Файл заголовка.
#include <iostream>
#include <boost/asio.hpp>
Поскольку в этом примере используются таймеры, мы должны включить соответствующий Boost. Файл заголовка Date_Time для манипулирования временем.
#include <boost/date_time/posix_time/posix_time.hpp>
Все программы, использующие Asio, должны иметь хотя бы один объектio_service. Этот класс обеспечивает доступ к функциональности ввода/вывода. Объявляем объект такого типа первым делом в главной функции.
int main()
{
boost::asio::io_service io;
Далее объявляем объект типа boost::asio::deadline_timer. Основные классы asio, которые обеспечивают функциональность ввода-вывода (или, как в этом случае, функциональность таймера), всегда ссылаются на io_service в качестве первого аргумента конструктора. Второй аргумент конструктору устанавливает, что таймер истекает через 5 секунд.
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
В этом простом примере мы выполняем блокирующее ожидание на таймере. То есть призыв кdeadline_timer::wait()не вернется до истечения срока действия таймера, через 5 секунд после его создания (т.е. не с момента начала ожидания).
Таймер крайнего срока всегда находится в одном из двух состояний: «истечен» или «не истек». Есликрайний срок_timer::wait()функция вызывается на просроченный таймер, он немедленно возвращается.
t.wait();
Наконец мы напечатаем обязательное«Привет, мир!»
сообщение, чтобы показать, когда срок истек.
std::cout << "Hello, world!" << std::endl;
return 0;
}
См.полный список источников
Вернуться вучебный индекс
Следующий:Таймер.2 - Использование таймера асинхронно