Долгосрочные операции ввода-вывода часто имеют крайний срок, к которому они должны быть завершены. Эти сроки могут быть выражены как абсолютные времена, но часто рассчитываются относительно текущего времени.
В качестве простого примера для выполнения синхронной операции ожидания на таймере с использованием относительного времени можно написать:
io_service i;
...
deadline_timer t(i);
t.expires_from_now(boost::posix_time::seconds(5));
t.wait();
Чаще всего программа выполняет асинхронную операцию ожидания на таймере:
void handler(boost::system::error_code ec) { ... }
...
io_service i;
...
deadline_timer t(i);
t.expires_from_now(boost::posix_time::milliseconds(400));
t.async_wait(handler);
...
i.run();
Срок, связанный с таймером, также может быть получен как относительное время:
boost::posix_time::time_duration time_until_expiry
= t.expires_from_now();
или в качестве абсолютного времени, позволяющего состав таймеров:
deadline_timer t2(i);
t2.expires_at(t.expires_at() + boost::posix_time::seconds(30));
basic_deadline_timer, deadline_timer, deadline_timer_service, timer tutorials.