• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>defer (2 of 3 overloads)</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="../defer.html" title="defer">
9<link rel="prev" href="overload1.html" title="defer (1 of 3 overloads)">
10<link rel="next" href="overload3.html" title="defer (3 of 3 overloads)">
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="overload1.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../defer.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="overload3.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.defer.overload2"></a><a class="link" href="overload2.html" title="defer (2 of 3 overloads)">defer (2 of 3
28        overloads)</a>
29</h4></div></div></div>
30<p>
31          Submits a completion token or function object for execution.
32        </p>
33<pre class="programlisting">template&lt;
34    typename <a class="link" href="../Executor1.html" title="Executor requirements">Executor</a>,
35    typename CompletionToken = <a class="link" href="../asynchronous_operations.html#boost_asio.reference.asynchronous_operations.default_completion_tokens"><span class="emphasis"><em>DEFAULT</em></span></a>&gt;
36<a class="link" href="../asynchronous_operations.html#boost_asio.reference.asynchronous_operations.automatic_deduction_of_initiating_function_return_type"><span class="emphasis"><em>DEDUCED</em></span></a> defer(
37    const Executor &amp; ex,
38    CompletionToken &amp;&amp; token = <a class="link" href="../asynchronous_operations.html#boost_asio.reference.asynchronous_operations.default_completion_tokens"><span class="emphasis"><em>DEFAULT</em></span></a>,
39    typename enable_if&lt; execution::is_executor&lt; Executor &gt;::value||is_executor&lt; Executor &gt;::value &gt;::type *  = 0);
40</pre>
41<p>
42          This function submits an object for execution using the specified executor.
43          The function object is queued for execution, and is never called from the
44          current thread prior to returning from <code class="computeroutput">defer()</code>.
45        </p>
46<p>
47          The use of <code class="computeroutput">defer()</code>, rather than <a class="link" href="../post.html" title="post"><code class="computeroutput">post</code></a>
48          , indicates the caller's preference that the executor defer the queueing
49          of the function object. This may allow the executor to optimise queueing
50          for cases when the function object represents a continuation of the current
51          call context.
52        </p>
53<p>
54          This function has the following effects:
55        </p>
56<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
57<li class="listitem">
58              Constructs a function object handler of type <code class="computeroutput">Handler</code>,
59              initialized with <code class="computeroutput">handler(forward&lt;CompletionToken&gt;(token))</code>.
60            </li>
61<li class="listitem">
62              Constructs an object <code class="computeroutput">result</code> of type <code class="computeroutput">async_result&lt;Handler&gt;</code>,
63              initializing the object as <code class="computeroutput">result(handler)</code>.
64            </li>
65<li class="listitem">
66              Obtains the handler's associated executor object <code class="computeroutput">ex1</code> by
67              performing <code class="computeroutput">get_associated_executor(handler)</code>.
68            </li>
69<li class="listitem">
70              Creates a work object <code class="computeroutput">w</code> by performing <code class="computeroutput">make_work(ex1)</code>.
71            </li>
72<li class="listitem">
73              Obtains the handler's associated allocator object <code class="computeroutput">alloc</code>
74              by performing <code class="computeroutput">get_associated_allocator(handler)</code>.
75            </li>
76<li class="listitem">
77              Constructs a function object <code class="computeroutput">f</code> with a function call operator
78              that performs <code class="computeroutput">ex1.dispatch(std::move(handler), alloc)</code>
79              followed by <code class="computeroutput">w.reset()</code>.
80            </li>
81<li class="listitem">
82              Performs <code class="computeroutput">Executor(ex).defer(std::move(f), alloc)</code>.
83            </li>
84<li class="listitem">
85              Returns <code class="computeroutput">result.get()</code>.
86            </li>
87</ul></div>
88</div>
89<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
90<td align="left"></td>
91<td align="right"><div class="copyright-footer">Copyright © 2003-2020 Christopher M.
92      Kohlhoff<p>
93        Distributed under the Boost Software License, Version 1.0. (See accompanying
94        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>)
95      </p>
96</div></td>
97</tr></table>
98<hr>
99<div class="spirit-nav">
100<a accesskey="p" href="overload1.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../defer.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="overload3.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
101</div>
102</body>
103</html>
104