• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>basic_waitable_timer::rebind_executor::other</title>
5<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../../boost_asio.html" title="Boost.Asio">
8<link rel="up" href="../basic_waitable_timer__rebind_executor.html" title="basic_waitable_timer::rebind_executor">
9<link rel="prev" href="../basic_waitable_timer__rebind_executor.html" title="basic_waitable_timer::rebind_executor">
10<link rel="next" href="../basic_yield_context.html" title="basic_yield_context">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="../basic_waitable_timer__rebind_executor.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_waitable_timer__rebind_executor.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../boost_asio.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../basic_yield_context.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h4 class="title">
27<a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other"></a><a class="link" href="other.html" title="basic_waitable_timer::rebind_executor::other">basic_waitable_timer::rebind_executor::other</a>
28</h4></div></div></div>
29<p>
30          <a class="indexterm" name="boost_asio.indexterm.basic_waitable_timer__rebind_executor.other"></a>
31The
32          timer type when rebound to the specified executor.
33        </p>
34<pre class="programlisting">typedef basic_waitable_timer&lt; Clock, WaitTraits, Executor1 &gt; other;
35</pre>
36<h6>
37<a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.h0"></a>
38          <span class="phrase"><a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.types"></a></span><a class="link" href="other.html#boost_asio.reference.basic_waitable_timer__rebind_executor.other.types">Types</a>
39        </h6>
40<div class="informaltable"><table class="table">
41<colgroup>
42<col>
43<col>
44</colgroup>
45<thead><tr>
46<th>
47                  <p>
48                    Name
49                  </p>
50                </th>
51<th>
52                  <p>
53                    Description
54                  </p>
55                </th>
56</tr></thead>
57<tbody>
58<tr>
59<td>
60                  <p>
61                    <a class="link" href="../basic_waitable_timer__rebind_executor.html" title="basic_waitable_timer::rebind_executor"><span class="bold"><strong>rebind_executor</strong></span></a>
62                  </p>
63                </td>
64<td>
65                  <p>
66                    Rebinds the timer type to another executor.
67                  </p>
68                </td>
69</tr>
70<tr>
71<td>
72                  <p>
73                    <a class="link" href="../basic_waitable_timer/clock_type.html" title="basic_waitable_timer::clock_type"><span class="bold"><strong>clock_type</strong></span></a>
74                  </p>
75                </td>
76<td>
77                  <p>
78                    The clock type.
79                  </p>
80                </td>
81</tr>
82<tr>
83<td>
84                  <p>
85                    <a class="link" href="../basic_waitable_timer/duration.html" title="basic_waitable_timer::duration"><span class="bold"><strong>duration</strong></span></a>
86                  </p>
87                </td>
88<td>
89                  <p>
90                    The duration type of the clock.
91                  </p>
92                </td>
93</tr>
94<tr>
95<td>
96                  <p>
97                    <a class="link" href="../basic_waitable_timer/executor_type.html" title="basic_waitable_timer::executor_type"><span class="bold"><strong>executor_type</strong></span></a>
98                  </p>
99                </td>
100<td>
101                  <p>
102                    The type of the executor associated with the object.
103                  </p>
104                </td>
105</tr>
106<tr>
107<td>
108                  <p>
109                    <a class="link" href="../basic_waitable_timer/time_point.html" title="basic_waitable_timer::time_point"><span class="bold"><strong>time_point</strong></span></a>
110                  </p>
111                </td>
112<td>
113                  <p>
114                    The time point type of the clock.
115                  </p>
116                </td>
117</tr>
118<tr>
119<td>
120                  <p>
121                    <a class="link" href="../basic_waitable_timer/traits_type.html" title="basic_waitable_timer::traits_type"><span class="bold"><strong>traits_type</strong></span></a>
122                  </p>
123                </td>
124<td>
125                  <p>
126                    The wait traits type.
127                  </p>
128                </td>
129</tr>
130</tbody>
131</table></div>
132<h6>
133<a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.h1"></a>
134          <span class="phrase"><a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.member_functions"></a></span><a class="link" href="other.html#boost_asio.reference.basic_waitable_timer__rebind_executor.other.member_functions">Member
135          Functions</a>
136        </h6>
137<div class="informaltable"><table class="table">
138<colgroup>
139<col>
140<col>
141</colgroup>
142<thead><tr>
143<th>
144                  <p>
145                    Name
146                  </p>
147                </th>
148<th>
149                  <p>
150                    Description
151                  </p>
152                </th>
153</tr></thead>
154<tbody>
155<tr>
156<td>
157                  <p>
158                    <a class="link" href="../basic_waitable_timer/async_wait.html" title="basic_waitable_timer::async_wait"><span class="bold"><strong>async_wait</strong></span></a>
159                  </p>
160                </td>
161<td>
162                  <p>
163                    Start an asynchronous wait on the timer.
164                  </p>
165                </td>
166</tr>
167<tr>
168<td>
169                  <p>
170                    <a class="link" href="../basic_waitable_timer/basic_waitable_timer.html" title="basic_waitable_timer::basic_waitable_timer"><span class="bold"><strong>basic_waitable_timer</strong></span></a> <span class="silver">[constructor]</span>
171                  </p>
172                </td>
173<td>
174                  <p>
175                    Constructor. <br> <span class="silver"> —</span><br> Constructor to set a particular expiry
176                    time as an absolute time. <br> <span class="silver"> —</span><br> Constructor to set a
177                    particular expiry time relative to now. <br> <span class="silver"> —</span><br> Move-construct
178                    a basic_waitable_timer from another.
179                  </p>
180                </td>
181</tr>
182<tr>
183<td>
184                  <p>
185                    <a class="link" href="../basic_waitable_timer/cancel.html" title="basic_waitable_timer::cancel"><span class="bold"><strong>cancel</strong></span></a>
186                  </p>
187                </td>
188<td>
189                  <p>
190                    Cancel any asynchronous operations that are waiting on the timer.
191                    <br> <span class="silver"> —</span><br> (Deprecated: Use non-error_code overload.) Cancel
192                    any asynchronous operations that are waiting on the timer.
193                  </p>
194                </td>
195</tr>
196<tr>
197<td>
198                  <p>
199                    <a class="link" href="../basic_waitable_timer/cancel_one.html" title="basic_waitable_timer::cancel_one"><span class="bold"><strong>cancel_one</strong></span></a>
200                  </p>
201                </td>
202<td>
203                  <p>
204                    Cancels one asynchronous operation that is waiting on the timer.
205                    <br> <span class="silver"> —</span><br> (Deprecated: Use non-error_code overload.) Cancels
206                    one asynchronous operation that is waiting on the timer.
207                  </p>
208                </td>
209</tr>
210<tr>
211<td>
212                  <p>
213                    <a class="link" href="../basic_waitable_timer/expires_after.html" title="basic_waitable_timer::expires_after"><span class="bold"><strong>expires_after</strong></span></a>
214                  </p>
215                </td>
216<td>
217                  <p>
218                    Set the timer's expiry time relative to now.
219                  </p>
220                </td>
221</tr>
222<tr>
223<td>
224                  <p>
225                    <a class="link" href="../basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><span class="bold"><strong>expires_at</strong></span></a>
226                  </p>
227                </td>
228<td>
229                  <p>
230                    (Deprecated: Use expiry().) Get the timer's expiry time as an
231                    absolute time. <br> <span class="silver"> —</span><br> Set the timer's expiry time as an
232                    absolute time. <br> <span class="silver"> —</span><br> (Deprecated: Use non-error_code
233                    overload.) Set the timer's expiry time as an absolute time.
234                  </p>
235                </td>
236</tr>
237<tr>
238<td>
239                  <p>
240                    <a class="link" href="../basic_waitable_timer/expires_from_now.html" title="basic_waitable_timer::expires_from_now"><span class="bold"><strong>expires_from_now</strong></span></a>
241                  </p>
242                </td>
243<td>
244                  <p>
245                    (Deprecated: Use expiry().) Get the timer's expiry time relative
246                    to now. <br> <span class="silver"> —</span><br> (Deprecated: Use expires_after().) Set
247                    the timer's expiry time relative to now.
248                  </p>
249                </td>
250</tr>
251<tr>
252<td>
253                  <p>
254                    <a class="link" href="../basic_waitable_timer/expiry.html" title="basic_waitable_timer::expiry"><span class="bold"><strong>expiry</strong></span></a>
255                  </p>
256                </td>
257<td>
258                  <p>
259                    Get the timer's expiry time as an absolute time.
260                  </p>
261                </td>
262</tr>
263<tr>
264<td>
265                  <p>
266                    <a class="link" href="../basic_waitable_timer/get_executor.html" title="basic_waitable_timer::get_executor"><span class="bold"><strong>get_executor</strong></span></a>
267                  </p>
268                </td>
269<td>
270                  <p>
271                    Get the executor associated with the object.
272                  </p>
273                </td>
274</tr>
275<tr>
276<td>
277                  <p>
278                    <a class="link" href="../basic_waitable_timer/operator_eq_.html" title="basic_waitable_timer::operator="><span class="bold"><strong>operator=</strong></span></a>
279                  </p>
280                </td>
281<td>
282                  <p>
283                    Move-assign a basic_waitable_timer from another.
284                  </p>
285                </td>
286</tr>
287<tr>
288<td>
289                  <p>
290                    <a class="link" href="../basic_waitable_timer/wait.html" title="basic_waitable_timer::wait"><span class="bold"><strong>wait</strong></span></a>
291                  </p>
292                </td>
293<td>
294                  <p>
295                    Perform a blocking wait on the timer.
296                  </p>
297                </td>
298</tr>
299<tr>
300<td>
301                  <p>
302                    <a class="link" href="../basic_waitable_timer/_basic_waitable_timer.html" title="basic_waitable_timer::~basic_waitable_timer"><span class="bold"><strong>~basic_waitable_timer</strong></span></a> <span class="silver">[destructor]</span>
303                  </p>
304                </td>
305<td>
306                  <p>
307                    Destroys the timer.
308                  </p>
309                </td>
310</tr>
311</tbody>
312</table></div>
313<p>
314          The <a class="link" href="../basic_waitable_timer.html" title="basic_waitable_timer"><code class="computeroutput">basic_waitable_timer</code></a>
315          class template provides the ability to perform a blocking or asynchronous
316          wait for a timer to expire.
317        </p>
318<p>
319          A waitable timer is always in one of two states: "expired" or
320          "not expired". If the <code class="computeroutput">wait()</code> or <code class="computeroutput">async_wait()</code>
321          function is called on an expired timer, the wait operation will complete
322          immediately.
323        </p>
324<p>
325          Most applications will use one of the <a class="link" href="../steady_timer.html" title="steady_timer"><code class="computeroutput">steady_timer</code></a>,
326          <a class="link" href="../system_timer.html" title="system_timer"><code class="computeroutput">system_timer</code></a>
327          or <a class="link" href="../high_resolution_timer.html" title="high_resolution_timer"><code class="computeroutput">high_resolution_timer</code></a>
328          typedefs.
329        </p>
330<h6>
331<a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.h2"></a>
332          <span class="phrase"><a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.remarks"></a></span><a class="link" href="other.html#boost_asio.reference.basic_waitable_timer__rebind_executor.other.remarks">Remarks</a>
333        </h6>
334<p>
335          This waitable timer functionality is for use with the C++11 standard library's
336          <code class="computeroutput">&lt;chrono&gt;</code> facility, or with the Boost.Chrono library.
337        </p>
338<h6>
339<a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.h3"></a>
340          <span class="phrase"><a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.thread_safety"></a></span><a class="link" href="other.html#boost_asio.reference.basic_waitable_timer__rebind_executor.other.thread_safety">Thread
341          Safety</a>
342        </h6>
343<p>
344          <span class="emphasis"><em>Distinct</em></span> <span class="emphasis"><em>objects:</em></span> Safe.
345        </p>
346<p>
347          <span class="emphasis"><em>Shared</em></span> <span class="emphasis"><em>objects:</em></span> Unsafe.
348        </p>
349<h6>
350<a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.h4"></a>
351          <span class="phrase"><a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.examples"></a></span><a class="link" href="other.html#boost_asio.reference.basic_waitable_timer__rebind_executor.other.examples">Examples</a>
352        </h6>
353<p>
354          Performing a blocking wait (C++11):
355        </p>
356<pre class="programlisting">// Construct a timer without setting an expiry time.
357boost::asio::steady_timer timer(my_context);
358
359// Set an expiry time relative to now.
360timer.expires_after(std::chrono::seconds(5));
361
362// Wait for the timer to expire.
363timer.wait();
364</pre>
365<p>
366          Performing an asynchronous wait (C++11):
367        </p>
368<pre class="programlisting">void handler(const boost::system::error_code&amp; error)
369{
370  if (!error)
371  {
372    // Timer expired.
373  }
374}
375
376...
377
378// Construct a timer with an absolute expiry time.
379boost::asio::steady_timer timer(my_context,
380    std::chrono::steady_clock::now() + std::chrono::seconds(60));
381
382// Start an asynchronous wait.
383timer.async_wait(handler);
384</pre>
385<h6>
386<a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.h5"></a>
387          <span class="phrase"><a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.changing_an_active_waitable_timer_s_expiry_time"></a></span><a class="link" href="other.html#boost_asio.reference.basic_waitable_timer__rebind_executor.other.changing_an_active_waitable_timer_s_expiry_time">Changing
388          an active waitable timer's expiry time</a>
389        </h6>
390<p>
391          Changing the expiry time of a timer while there are pending asynchronous
392          waits causes those wait operations to be cancelled. To ensure that the
393          action associated with the timer is performed only once, use something
394          like this: used:
395        </p>
396<pre class="programlisting">void on_some_event()
397{
398  if (my_timer.expires_after(seconds(5)) &gt; 0)
399  {
400    // We managed to cancel the timer. Start new asynchronous wait.
401    my_timer.async_wait(on_timeout);
402  }
403  else
404  {
405    // Too late, timer has already expired!
406  }
407}
408
409void on_timeout(const boost::system::error_code&amp; e)
410{
411  if (e != boost::asio::error::operation_aborted)
412  {
413    // Timer was not cancelled, take necessary action.
414  }
415}
416</pre>
417<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
418<li class="listitem">
419              The <code class="computeroutput">boost::asio::basic_waitable_timer::expires_after()</code>
420              function cancels any pending asynchronous waits, and returns the number
421              of asynchronous waits that were cancelled. If it returns 0 then you
422              were too late and the wait handler has already been executed, or will
423              soon be executed. If it returns 1 then the wait handler was successfully
424              cancelled.
425            </li>
426<li class="listitem">
427              If a wait handler is cancelled, the boost::system::error_code passed
428              to it contains the value <code class="computeroutput">boost::asio::error::operation_aborted</code>.
429            </li>
430</ul></div>
431<h6>
432<a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.h6"></a>
433          <span class="phrase"><a name="boost_asio.reference.basic_waitable_timer__rebind_executor.other.requirements"></a></span><a class="link" href="other.html#boost_asio.reference.basic_waitable_timer__rebind_executor.other.requirements">Requirements</a>
434        </h6>
435<p>
436          <span class="emphasis"><em>Header: </em></span><code class="literal">boost/asio/basic_waitable_timer.hpp</code>
437        </p>
438<p>
439          <span class="emphasis"><em>Convenience header: </em></span><code class="literal">boost/asio.hpp</code>
440        </p>
441</div>
442<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
443<td align="left"></td>
444<td align="right"><div class="copyright-footer">Copyright © 2003-2020 Christopher M.
445      Kohlhoff<p>
446        Distributed under the Boost Software License, Version 1.0. (See accompanying
447        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
448      </p>
449</div></td>
450</tr></table>
451<hr>
452<div class="spirit-nav">
453<a accesskey="p" href="../basic_waitable_timer__rebind_executor.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_waitable_timer__rebind_executor.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../boost_asio.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../basic_yield_context.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
454</div>
455</body>
456</html>
457