summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/src/doc/overview/timers.qbk
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asio/src/doc/overview/timers.qbk')
-rw-r--r--3rdparty/asio/src/doc/overview/timers.qbk52
1 files changed, 52 insertions, 0 deletions
diff --git a/3rdparty/asio/src/doc/overview/timers.qbk b/3rdparty/asio/src/doc/overview/timers.qbk
new file mode 100644
index 00000000000..0c5528dcc1b
--- /dev/null
+++ b/3rdparty/asio/src/doc/overview/timers.qbk
@@ -0,0 +1,52 @@
+[/
+ / 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]