• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Platform-Specific Implementation Notes</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="../overview.html" title="Overview">
9<link rel="prev" href="cpp2011/futures.html" title="Futures">
10<link rel="next" href="../using.html" title="Using Boost.Asio">
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="cpp2011/futures.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.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="../using.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="boost_asio.overview.implementation"></a><a class="link" href="implementation.html" title="Platform-Specific Implementation Notes">Platform-Specific
28      Implementation Notes</a>
29</h3></div></div></div>
30<p>
31        This section lists platform-specific implementation details, such as the
32        default demultiplexing mechanism, the number of threads created internally,
33        and when threads are created.
34      </p>
35<h5>
36<a name="boost_asio.overview.implementation.h0"></a>
37        <span class="phrase"><a name="boost_asio.overview.implementation.linux_kernel_2_4"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.linux_kernel_2_4">Linux
38        Kernel 2.4</a>
39      </h5>
40<p>
41        Demultiplexing mechanism:
42      </p>
43<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
44            Uses <code class="computeroutput">select</code> for demultiplexing. This means that the number
45            of file descriptors in the process cannot be permitted to exceed <code class="computeroutput">FD_SETSIZE</code>.
46          </li></ul></div>
47<p>
48        Threads:
49      </p>
50<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
51<li class="listitem">
52            Demultiplexing using <code class="computeroutput">select</code> is performed in one of the threads
53            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
54            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
55          </li>
56<li class="listitem">
57            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
58            host resolution. This thread is created on the first call to either
59            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
60          </li>
61</ul></div>
62<p>
63        Scatter-Gather:
64      </p>
65<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
66            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
67            single operation.
68          </li></ul></div>
69<h5>
70<a name="boost_asio.overview.implementation.h1"></a>
71        <span class="phrase"><a name="boost_asio.overview.implementation.linux_kernel_2_6"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.linux_kernel_2_6">Linux
72        Kernel 2.6</a>
73      </h5>
74<p>
75        Demultiplexing mechanism:
76      </p>
77<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
78            Uses <code class="computeroutput">epoll</code> for demultiplexing.
79          </li></ul></div>
80<p>
81        Threads:
82      </p>
83<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
84<li class="listitem">
85            Demultiplexing using <code class="computeroutput">epoll</code> is performed in one of the threads
86            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
87            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
88          </li>
89<li class="listitem">
90            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
91            host resolution. This thread is created on the first call to either
92            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
93          </li>
94</ul></div>
95<p>
96        Scatter-Gather:
97      </p>
98<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
99            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
100            single operation.
101          </li></ul></div>
102<h5>
103<a name="boost_asio.overview.implementation.h2"></a>
104        <span class="phrase"><a name="boost_asio.overview.implementation.solaris"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.solaris">Solaris</a>
105      </h5>
106<p>
107        Demultiplexing mechanism:
108      </p>
109<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
110            Uses <code class="literal">/dev/poll</code> for demultiplexing.
111          </li></ul></div>
112<p>
113        Threads:
114      </p>
115<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
116<li class="listitem">
117            Demultiplexing using <code class="literal">/dev/poll</code> is performed in one
118            of the threads that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
119            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
120          </li>
121<li class="listitem">
122            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
123            host resolution. This thread is created on the first call to either
124            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
125          </li>
126</ul></div>
127<p>
128        Scatter-Gather:
129      </p>
130<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
131            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
132            single operation.
133          </li></ul></div>
134<h5>
135<a name="boost_asio.overview.implementation.h3"></a>
136        <span class="phrase"><a name="boost_asio.overview.implementation.qnx_neutrino"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.qnx_neutrino">QNX
137        Neutrino</a>
138      </h5>
139<p>
140        Demultiplexing mechanism:
141      </p>
142<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
143            Uses <code class="computeroutput">select</code> for demultiplexing. This means that the number
144            of file descriptors in the process cannot be permitted to exceed <code class="computeroutput">FD_SETSIZE</code>.
145          </li></ul></div>
146<p>
147        Threads:
148      </p>
149<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
150<li class="listitem">
151            Demultiplexing using <code class="computeroutput">select</code> is performed in one of the threads
152            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
153            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
154          </li>
155<li class="listitem">
156            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
157            host resolution. This thread is created on the first call to either
158            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
159          </li>
160</ul></div>
161<p>
162        Scatter-Gather:
163      </p>
164<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
165            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
166            single operation.
167          </li></ul></div>
168<h5>
169<a name="boost_asio.overview.implementation.h4"></a>
170        <span class="phrase"><a name="boost_asio.overview.implementation.mac_os_x"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.mac_os_x">Mac
171        OS X</a>
172      </h5>
173<p>
174        Demultiplexing mechanism:
175      </p>
176<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
177            Uses <code class="computeroutput">kqueue</code> for demultiplexing.
178          </li></ul></div>
179<p>
180        Threads:
181      </p>
182<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
183<li class="listitem">
184            Demultiplexing using <code class="computeroutput">kqueue</code> is performed in one of the threads
185            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
186            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
187          </li>
188<li class="listitem">
189            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
190            host resolution. This thread is created on the first call to either
191            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
192          </li>
193</ul></div>
194<p>
195        Scatter-Gather:
196      </p>
197<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
198            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
199            single operation.
200          </li></ul></div>
201<h5>
202<a name="boost_asio.overview.implementation.h5"></a>
203        <span class="phrase"><a name="boost_asio.overview.implementation.freebsd"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.freebsd">FreeBSD</a>
204      </h5>
205<p>
206        Demultiplexing mechanism:
207      </p>
208<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
209            Uses <code class="computeroutput">kqueue</code> for demultiplexing.
210          </li></ul></div>
211<p>
212        Threads:
213      </p>
214<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
215<li class="listitem">
216            Demultiplexing using <code class="computeroutput">kqueue</code> is performed in one of the threads
217            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
218            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
219          </li>
220<li class="listitem">
221            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
222            host resolution. This thread is created on the first call to either
223            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
224          </li>
225</ul></div>
226<p>
227        Scatter-Gather:
228      </p>
229<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
230            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
231            single operation.
232          </li></ul></div>
233<h5>
234<a name="boost_asio.overview.implementation.h6"></a>
235        <span class="phrase"><a name="boost_asio.overview.implementation.aix"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.aix">AIX</a>
236      </h5>
237<p>
238        Demultiplexing mechanism:
239      </p>
240<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
241            Uses <code class="computeroutput">select</code> for demultiplexing. This means that the number
242            of file descriptors in the process cannot be permitted to exceed <code class="computeroutput">FD_SETSIZE</code>.
243          </li></ul></div>
244<p>
245        Threads:
246      </p>
247<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
248<li class="listitem">
249            Demultiplexing using <code class="computeroutput">select</code> is performed in one of the threads
250            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
251            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
252          </li>
253<li class="listitem">
254            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
255            host resolution. This thread is created on the first call to either
256            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
257          </li>
258</ul></div>
259<p>
260        Scatter-Gather:
261      </p>
262<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
263            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
264            single operation.
265          </li></ul></div>
266<h5>
267<a name="boost_asio.overview.implementation.h7"></a>
268        <span class="phrase"><a name="boost_asio.overview.implementation.hp_ux"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.hp_ux">HP-UX</a>
269      </h5>
270<p>
271        Demultiplexing mechanism:
272      </p>
273<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
274            Uses <code class="computeroutput">select</code> for demultiplexing. This means that the number
275            of file descriptors in the process cannot be permitted to exceed <code class="computeroutput">FD_SETSIZE</code>.
276          </li></ul></div>
277<p>
278        Threads:
279      </p>
280<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
281<li class="listitem">
282            Demultiplexing using <code class="computeroutput">select</code> is performed in one of the threads
283            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
284            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
285          </li>
286<li class="listitem">
287            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
288            host resolution. This thread is created on the first call to either
289            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
290          </li>
291</ul></div>
292<p>
293        Scatter-Gather:
294      </p>
295<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
296            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
297            single operation.
298          </li></ul></div>
299<h5>
300<a name="boost_asio.overview.implementation.h8"></a>
301        <span class="phrase"><a name="boost_asio.overview.implementation.tru64"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.tru64">Tru64</a>
302      </h5>
303<p>
304        Demultiplexing mechanism:
305      </p>
306<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
307            Uses <code class="computeroutput">select</code> for demultiplexing. This means that the number
308            of file descriptors in the process cannot be permitted to exceed <code class="computeroutput">FD_SETSIZE</code>.
309          </li></ul></div>
310<p>
311        Threads:
312      </p>
313<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
314<li class="listitem">
315            Demultiplexing using <code class="computeroutput">select</code> is performed in one of the threads
316            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
317            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
318          </li>
319<li class="listitem">
320            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
321            host resolution. This thread is created on the first call to either
322            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
323          </li>
324</ul></div>
325<p>
326        Scatter-Gather:
327      </p>
328<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
329            At most <code class="computeroutput">min(64,IOV_MAX)</code> buffers may be transferred in a
330            single operation.
331          </li></ul></div>
332<h5>
333<a name="boost_asio.overview.implementation.h9"></a>
334        <span class="phrase"><a name="boost_asio.overview.implementation.windows_95__98_and_me"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.windows_95__98_and_me">Windows
335        95, 98 and Me</a>
336      </h5>
337<p>
338        Demultiplexing mechanism:
339      </p>
340<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
341            Uses <code class="computeroutput">select</code> for demultiplexing.
342          </li></ul></div>
343<p>
344        Threads:
345      </p>
346<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
347<li class="listitem">
348            Demultiplexing using <code class="computeroutput">select</code> is performed in one of the threads
349            that calls <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
350            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
351          </li>
352<li class="listitem">
353            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
354            host resolution. This thread is created on the first call to either
355            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
356          </li>
357</ul></div>
358<p>
359        Scatter-Gather:
360      </p>
361<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
362            For sockets, at most 16 buffers may be transferred in a single operation.
363          </li></ul></div>
364<h5>
365<a name="boost_asio.overview.implementation.h10"></a>
366        <span class="phrase"><a name="boost_asio.overview.implementation.windows_nt__2000__xp__2003__vista__7_and_8"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.windows_nt__2000__xp__2003__vista__7_and_8">Windows
367        NT, 2000, XP, 2003, Vista, 7 and 8</a>
368      </h5>
369<p>
370        Demultiplexing mechanism:
371      </p>
372<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
373<li class="listitem">
374            Uses overlapped I/O and I/O completion ports for all asynchronous socket
375            operations except for asynchronous connect.
376          </li>
377<li class="listitem">
378            Uses <code class="computeroutput">select</code> for emulating asynchronous connect.
379          </li>
380</ul></div>
381<p>
382        Threads:
383      </p>
384<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
385<li class="listitem">
386            Demultiplexing using I/O completion ports is performed in all threads
387            that call <code class="computeroutput">io_context::run()</code>, <code class="computeroutput">io_context::run_one()</code>,
388            <code class="computeroutput">io_context::poll()</code> or <code class="computeroutput">io_context::poll_one()</code>.
389          </li>
390<li class="listitem">
391            An additional thread per <code class="computeroutput">io_context</code> is used to trigger timers.
392            This thread is created on construction of the first <code class="computeroutput">basic_deadline_timer</code>
393            or <code class="computeroutput">basic_waitable_timer</code> objects.
394          </li>
395<li class="listitem">
396            An additional thread per <code class="computeroutput">io_context</code> is used for the <code class="computeroutput">select</code>
397            demultiplexing. This thread is created on the first call to <code class="computeroutput">async_connect()</code>.
398          </li>
399<li class="listitem">
400            An additional thread per <code class="computeroutput">io_context</code> is used to emulate asynchronous
401            host resolution. This thread is created on the first call to either
402            <code class="computeroutput">ip::tcp::resolver::async_resolve()</code> or <code class="computeroutput">ip::udp::resolver::async_resolve()</code>.
403          </li>
404</ul></div>
405<p>
406        Scatter-Gather:
407      </p>
408<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
409<li class="listitem">
410            For sockets, at most 64 buffers may be transferred in a single operation.
411          </li>
412<li class="listitem">
413            For stream-oriented handles, only one buffer may be transferred in a
414            single operation.
415          </li>
416</ul></div>
417<h5>
418<a name="boost_asio.overview.implementation.h11"></a>
419        <span class="phrase"><a name="boost_asio.overview.implementation.windows_runtime"></a></span><a class="link" href="implementation.html#boost_asio.overview.implementation.windows_runtime">Windows
420        Runtime</a>
421      </h5>
422<p>
423        Boost.Asio provides limited support for the Windows Runtime. It requires
424        that the language extensions be enabled. Due to the restricted facilities
425        exposed by the Windows Runtime API, the support comes with the following
426        caveats:
427      </p>
428<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
429<li class="listitem">
430            The core facilities such as the <code class="computeroutput">io_context</code>, <code class="computeroutput">strand</code>,
431            buffers, composed operations, timers, etc., should all work as normal.
432          </li>
433<li class="listitem">
434            For sockets, only client-side TCP is supported.
435          </li>
436<li class="listitem">
437            Explicit binding of a client-side TCP socket is not supported.
438          </li>
439<li class="listitem">
440            The <code class="computeroutput">cancel()</code> function is not supported for sockets. Asynchronous
441            operations may only be cancelled by closing the socket.
442          </li>
443<li class="listitem">
444            Operations that use <code class="computeroutput">null_buffers</code> are not supported.
445          </li>
446<li class="listitem">
447            Only <code class="computeroutput">tcp::no_delay</code> and <code class="computeroutput">socket_base::keep_alive</code>
448            options are supported.
449          </li>
450<li class="listitem">
451            Resolvers do not support service names, only numbers. I.e. you must use
452            "80" rather than "http".
453          </li>
454<li class="listitem">
455            Most resolver query flags have no effect.
456          </li>
457</ul></div>
458<p>
459        Demultiplexing mechanism:
460      </p>
461<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
462            Uses the <code class="computeroutput">Windows::Networking::Sockets::StreamSocket</code> class
463            to implement asynchronous TCP socket operations.
464          </li></ul></div>
465<p>
466        Threads:
467      </p>
468<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
469<li class="listitem">
470            Event completions are delivered to the Windows thread pool and posted
471            to the <code class="computeroutput">io_context</code> for the handler to be executed.
472          </li>
473<li class="listitem">
474            An additional thread per <code class="computeroutput">io_context</code> is used to trigger timers.
475            This thread is created on construction of the first timer objects.
476          </li>
477</ul></div>
478<p>
479        Scatter-Gather:
480      </p>
481<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
482            For sockets, at most one buffer may be transferred in a single operation.
483          </li></ul></div>
484</div>
485<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
486<td align="left"></td>
487<td align="right"><div class="copyright-footer">Copyright © 2003-2020 Christopher M.
488      Kohlhoff<p>
489        Distributed under the Boost Software License, Version 1.0. (See accompanying
490        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>)
491      </p>
492</div></td>
493</tr></table>
494<hr>
495<div class="spirit-nav">
496<a accesskey="p" href="cpp2011/futures.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.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="../using.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
497</div>
498</body>
499</html>
500