asio C++ library

PrevUpHomeNext

Timers

Long running I/O operations will often have a deadline by which they must have completed. These deadlines may be expressed as absolute times, but are often calculated relative to the current time.

As a simple example, to perform a synchronous wait operation on a timer using a relative time one may write:

io_context i;
...
deadline_timer t(i);
t.expires_from_now(boost::posix_time::seconds(5));
t.wait();

More commonly, a program will perform an asynchronous wait operation on a timer:

void handler(asio::error_code ec) { ... }
...
io_context i;
...
deadline_timer t(i);
t.expires_from_now(boost::posix_time::milliseconds(400));
t.async_wait(handler);
...
i.run();

The deadline associated with a timer may also be obtained as a relative time:

boost::posix_time::time_duration time_until_expiry
  = t.expires_from_now();

or as an absolute time to allow composition of timers:

deadline_timer t2(i);
t2.expires_at(t.expires_at() + boost::posix_time::seconds(30));
See Also

basic_deadline_timer, deadline_timer, timer tutorials.


PrevUpHomeNext