[/
 / Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
 /
 / Distributed under the Boost Software License, Version 1.0. (See accompanying
 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 /]

[section:timers 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));

[heading See Also]

[link asio.reference.basic_deadline_timer basic_deadline_timer],
[link asio.reference.deadline_timer deadline_timer],
[link asio.tutorial.tuttimer1 timer tutorials].

[endsect]
