|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r56768 - in sandbox/async/libs/async/doc: . html html/toward_boost_async html/toward_boost_async/appendices html/toward_boost_async/examples html/toward_boost_async/overview html/toward_boost_async/reference html/toward_boost_async/users_guide
From: vicente.botet_at_[hidden]
Date: 2009-10-13 02:51:24
Author: viboes
Date: 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
New Revision: 56768
URL: http://svn.boost.org/trac/boost/changeset/56768
Log:
TBoost.Async:
* Added doc
Added:
sandbox/async/libs/async/doc/html/
sandbox/async/libs/async/doc/html/index.html (contents, props changed)
sandbox/async/libs/async/doc/html/standalone_HTML.manifest (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/
sandbox/async/libs/async/doc/html/toward_boost_async/appendices/
sandbox/async/libs/async/doc/html/toward_boost_async/appendices.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/appendices/acknowledgments.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/appendices/changes.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/appendices/implementation.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/appendices/rationale.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/appendices/tests.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/appendices/tickets.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/appendices/todo.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/examples/
sandbox/async/libs/async/doc/html/toward_boost_async/examples.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/examples/from_a_single_to_a_multi_threaded_application.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/examples/parallel_sort.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/overview/
sandbox/async/libs/async/doc/html/toward_boost_async/overview.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/overview/motivation.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/reference/
sandbox/async/libs/async/doc/html/toward_boost_async/reference.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/reference/ae_act_framework_reference.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/reference/ae_act_models_reference.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/reference/concepts.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/
sandbox/async/libs/async/doc/html/toward_boost_async/users_guide.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/bibliography.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/getting_started.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/glosary.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/glossary.html (contents, props changed)
sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/tutorial.html (contents, props changed)
Text files modified:
sandbox/async/libs/async/doc/async.qbk | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
Modified: sandbox/async/libs/async/doc/async.qbk
==============================================================================
--- sandbox/async/libs/async/doc/async.qbk (original)
+++ sandbox/async/libs/async/doc/async.qbk 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -10,6 +10,8 @@
[quickbook 1.4]
[authors [Botet Escriba, Vicente J.]]
[copyright 2008-2009 Vicente J. Botet Escriba]
+ [id boost.async]
+ [dirname async]
[purpose C++ Asynchronous executors and asyncronous completion tokes framework with threaders/joiners, launcher.]
[category text]
[license
Added: sandbox/async/libs/async/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/index.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,102 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Toward Boost Async</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="index.html" title="Toward Boost Async">
+<link rel="next" href="toward_boost_async/overview.html" title=" Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="toward_boost_async/overview.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="article" lang="en">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="boost.async"></a>Toward Boost Async</h2></div>
+<div><div class="authorgroup"><div class="author"><h3 class="author">
+<span class="firstname">Vicente J.</span> <span class="surname">Botet Escriba</span>
+</h3></div></div></div>
+<div><p class="copyright">Copyright © 2008 -2009 Vicente J. Botet Escriba</p></div>
+<div><div class="legalnotice">
+<a name="id4803230"></a><p>
+ 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)
+ </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Overview</span></dt>
+<dd><dl><dt><span class="section"> Motivation</span></dt></dl></dd>
+<dt><span class="section"> Users'Guide</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="toward_boost_async/users_guide/getting_started.html"> Getting
+ Started</a></span></dt>
+<dt><span class="section"> Tutorial</span></dt>
+<dt><span class="section"> References</span></dt>
+<dt><span class="section"> Glossary</span></dt>
+</dl></dd>
+<dt><span class="section"> Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Concepts</span></dt>
+<dt><span class="section"><a href="toward_boost_async/reference/ae_act_framework_reference.html">AE/ACT
+ Framework Reference</a></span></dt>
+<dt><span class="section"><a href="toward_boost_async/reference/ae_act_models_reference.html">AE/ACT
+ Models Reference</a></span></dt>
+</dl></dd>
+<dt><span class="section">Examples</span></dt>
+<dd><dl>
+<dt><span class="section">Parallel sort</span></dt>
+<dt><span class="section"><a href="toward_boost_async/examples/from_a_single_to_a_multi_threaded_application.html">From
+ a single to a multi threaded application</a></span></dt>
+</dl></dd>
+<dt><span class="section">Appendices</span></dt>
+<dd><dl>
+<dt><span class="section"> Appendix A: History</span></dt>
+<dt><span class="section"><a href="toward_boost_async/appendices/rationale.html"> Appendix B:
+ Rationale</a></span></dt>
+<dt><span class="section"><a href="toward_boost_async/appendices/implementation.html"> Appendix
+ C: Implementation Notes</a></span></dt>
+<dt><span class="section"><a href="toward_boost_async/appendices/acknowledgments.html"> Appendix
+ D: Acknowledgments</a></span></dt>
+<dt><span class="section"> Appendix E: Tests</span></dt>
+<dt><span class="section"> Appendix F: Tickets</span></dt>
+<dt><span class="section"><a href="toward_boost_async/appendices/todo.html"> Appendix G: Future
+ plans</a></span></dt>
+</dl></dd>
+</dl>
+</div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Async is not a part of the Boost libraries.
+ </p></td></tr>
+</table></div>
+<p>
+ [/
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: October 05, 2009 at 16:50:16 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="toward_boost_async/overview.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/standalone_HTML.manifest
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/standalone_HTML.manifest 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,23 @@
+index.html
+toward_boost_async/overview.html
+toward_boost_async/overview/motivation.html
+toward_boost_async/users_guide.html
+toward_boost_async/users_guide/getting_started.html
+toward_boost_async/users_guide/tutorial.html
+toward_boost_async/users_guide/bibliography.html
+toward_boost_async/users_guide/glossary.html
+toward_boost_async/reference.html
+toward_boost_async/reference/concepts.html
+toward_boost_async/reference/ae_act_framework_reference.html
+toward_boost_async/reference/ae_act_models_reference.html
+toward_boost_async/examples.html
+toward_boost_async/examples/parallel_sort.html
+toward_boost_async/examples/from_a_single_to_a_multi_threaded_application.html
+toward_boost_async/appendices.html
+toward_boost_async/appendices/changes.html
+toward_boost_async/appendices/rationale.html
+toward_boost_async/appendices/implementation.html
+toward_boost_async/appendices/acknowledgments.html
+toward_boost_async/appendices/tests.html
+toward_boost_async/appendices/tickets.html
+toward_boost_async/appendices/todo.html
Added: sandbox/async/libs/async/doc/html/toward_boost_async/appendices.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/appendices.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendices</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost Async">
+<link rel="up" href="../index.html" title="Toward Boost Async">
+<link rel="prev" href="examples/from_a_single_to_a_multi_threaded_application.html" title="From
+ a single to a multi threaded application">
+<link rel="next" href="appendices/changes.html" title=" Appendix A: History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="examples/from_a_single_to_a_multi_threaded_application.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendices/changes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_async.appendices"></a>Appendices
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Appendix A: History</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="appendices/changes.html#toward_boost_async.appendices.changes.__version_0_2__may_07__2009__adding_immediate_asynchronous_executor___adaptation_to_boost_1_39"><span class="bold"><strong>Version 0.2, May 07, 2009</strong></span> Adding immediate asynchronous
+ executor + Adaptation to Boost 1.39</a></span></dt>
+<dt><span class="section"><a href="appendices/changes.html#toward_boost_async.appendices.changes.__version_0_1__april_29__2009__extraction_of_the_ae_act_frameworks_from_boost_async"><span class="bold"><strong>Version 0.1, April 29, 2009</strong></span> Extraction of the AE/ACT
+ frameworks from Boost.Async</a></span></dt>
+<dt><span class="section">Bugs</span></dt>
+</dl></dd>
+<dt><span class="section"><a href="appendices/rationale.html"> Appendix B:
+ Rationale</a></span></dt>
+<dt><span class="section"><a href="appendices/implementation.html"> Appendix
+ C: Implementation Notes</a></span></dt>
+<dt><span class="section"><a href="appendices/acknowledgments.html"> Appendix
+ D: Acknowledgments</a></span></dt>
+<dt><span class="section"> Appendix E: Tests</span></dt>
+<dd><dl><dt><span class="section">AE/ACT</span></dt></dl></dd>
+<dt><span class="section"> Appendix F: Tickets</span></dt>
+<dt><span class="section"><a href="appendices/todo.html"> Appendix G: Future
+ plans</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="appendices/todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review">Tasks
+ to do before review</a></span></dt>
+<dt><span class="section"><a href="appendices/todo.html#toward_boost_async.appendices.todo.for_later_releases">For
+ later releases</a></span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="examples/from_a_single_to_a_multi_threaded_application.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendices/changes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/appendices/acknowledgments.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/appendices/acknowledgments.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Appendix
+ D: Acknowledgments</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="implementation.html" title=" Appendix
+ C: Implementation Notes">
+<link rel="next" href="tests.html" title=" Appendix E: Tests">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="implementation.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tests.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.appendices.acknowledgments"></a><a href="acknowledgments.html" title=" Appendix
+ D: Acknowledgments"> Appendix
+ D: Acknowledgments</a>
+</h3></div></div></div>
+<p>
+ The Threader|Joiner design has been taken from <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1883.pdf" target="_top">N1833
+ - Preliminary Threading Library Proposal for TR2</a> Many thanks to Kevlin
+ Henney to make evident to me the separation between asynchronous executors,
+ and asynchronous completion tokens. Thanks to Alan Patterson for the idea
+ of the immediate executor.
+ </p>
+<p>
+ You can help me to make this library better! Any feedback is very welcome.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="implementation.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tests.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/appendices/changes.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/appendices/changes.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,151 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Appendix A: History</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="../appendices.html" title="Appendices">
+<link rel="next" href="rationale.html" title=" Appendix B:
+ Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../appendices.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.appendices.changes"></a> Appendix A: History
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="changes.html#toward_boost_async.appendices.changes.__version_0_2__may_07__2009__adding_immediate_asynchronous_executor___adaptation_to_boost_1_39"><span class="bold"><strong>Version 0.2, May 07, 2009</strong></span> Adding immediate asynchronous
+ executor + Adaptation to Boost 1.39</a></span></dt>
+<dt><span class="section"><a href="changes.html#toward_boost_async.appendices.changes.__version_0_1__april_29__2009__extraction_of_the_ae_act_frameworks_from_boost_async"><span class="bold"><strong>Version 0.1, April 29, 2009</strong></span> Extraction of the AE/ACT
+ frameworks from Boost.Async</a></span></dt>
+<dt><span class="section">Bugs</span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.appendices.changes.__version_0_2__may_07__2009__adding_immediate_asynchronous_executor___adaptation_to_boost_1_39"></a><a href="changes.html#toward_boost_async.appendices.changes.__version_0_2__may_07__2009__adding_immediate_asynchronous_executor___adaptation_to_boost_1_39" title="Version 0.2, May 07, 2009 Adding immediate asynchronous
+ executor + Adaptation to Boost 1.39"><span class="bold"><strong>Version 0.2, May 07, 2009</strong></span> Adding immediate asynchronous
+ executor + Adaptation to Boost 1.39</a>
+</h4></div></div></div>
+<p>
+ <span class="bold"><strong>Features:</strong></span>
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+ Immediate asynchronous executor
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.appendices.changes.__version_0_1__april_29__2009__extraction_of_the_ae_act_frameworks_from_boost_async"></a><a href="changes.html#toward_boost_async.appendices.changes.__version_0_1__april_29__2009__extraction_of_the_ae_act_frameworks_from_boost_async" title="Version 0.1, April 29, 2009 Extraction of the AE/ACT
+ frameworks from Boost.Async"><span class="bold"><strong>Version 0.1, April 29, 2009</strong></span> Extraction of the AE/ACT
+ frameworks from Boost.Async</a>
+</h4></div></div></div>
+<p>
+ <span class="bold"><strong>Features:</strong></span>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ An asynchronous execution framework working with <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ and <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ It includes some generic functions and several <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ and <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>:
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ fork and fork_all to execute asynchronously functions
+ </li>
+<li>
+ fork_after: request an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ to execute a function asynchronously once each one of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code> in
+ the dependency tuple parameter are ready. It is similar to the async_with_dependencies
+ proposed Peter Dimov.
+ </li>
+<li>
+ generic get, join, ... free functions to synchronize on an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+</li>
+<li>
+ generic get_all, join_all, ... free functions to synchronize on multiple
+ <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+</li>
+<li>
+ generic wait_for_all, wait_for_any to execute asynchronously functions
+ and wait for the completion of all or any of them.
+ </li>
+</ul></div>
+</li>
+<li>
+ Some <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ and <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ models
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ basic_threader: can be seen as a thread factory executing asynchronously
+ a function on the returned thread.
+ </li>
+<li>
+ launchers: Launchers can be seen as a future factory executing asynchronously
+ a function on a hidden thread.
+ </li>
+<li>
+ threader/joiner: A Threader runs a unary function in its own thread.
+ A Threader can be seen as a Joiner factory executing asynchronously
+ a function on a thread encapsulated on the returned Joiner. The joiner
+ is used to synchronize with and pick up the result from a function
+ or to manage the encapsulated thread.
+ </li>
+<li>
+<code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code> and <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code>
+ customization as an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ and an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ respectively. <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code>
+ can be seen as a <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code>
+ factory executing asynchronously a function on a pool of threads.
+ </li>
+<li>
+ a generic asynchronous_executor_decorator which allows to decorate
+ the function to be evaluated asynchronously.
+ </li>
+</ul></div>
+</li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.appendices.changes.__bugs_"></a>Bugs
+</h4></div></div></div>
+<a name="toward_boost_async.appendices.changes.__bugs_._emphasis_role__bold__open_bugs___emphasis_"></a><h5>
+<a name="id4892622"></a>
+ Open Bugs:
+ </h5>
+<a name="toward_boost_async.appendices.changes.__bugs_._emphasis_role__bold__fixed_bugs___emphasis_"></a><h5>
+<a name="id4892649"></a>
+ Fixed Bugs:
+ </h5>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../appendices.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/appendices/implementation.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/appendices/implementation.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Appendix
+ C: Implementation Notes</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="rationale.html" title=" Appendix B:
+ Rationale">
+<link rel="next" href="acknowledgments.html" title=" Appendix
+ D: Acknowledgments">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgments.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.appendices.implementation"></a><a href="implementation.html" title=" Appendix
+ C: Implementation Notes"> Appendix
+ C: Implementation Notes</a>
+</h3></div></div></div>
+<p>
+ TBC
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgments.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/appendices/rationale.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/appendices/rationale.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Appendix B:
+ Rationale</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="changes.html" title=" Appendix A: History">
+<link rel="next" href="implementation.html" title=" Appendix
+ C: Implementation Notes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="changes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="implementation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.appendices.rationale"></a><a href="rationale.html" title=" Appendix B:
+ Rationale"> Appendix B:
+ Rationale</a>
+</h3></div></div></div>
+<p>
+ TBC
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="changes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="implementation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/appendices/tests.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/appendices/tests.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,1663 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Appendix E: Tests</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="acknowledgments.html" title=" Appendix
+ D: Acknowledgments">
+<link rel="next" href="tickets.html" title=" Appendix F: Tickets">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgments.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tickets.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.appendices.tests"></a> Appendix E: Tests
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section">AE/ACT</span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.appendices.tests.ae_act"></a>AE/ACT
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Pool
+ </p>
+ </th>
+<th>
+ <p>
+ BaTh
+ </p>
+ </th>
+<th>
+ <p>
+ ShLa
+ </p>
+ </th>
+<th>
+ <p>
+ ShTh
+ </p>
+ </th>
+<th>
+ <p>
+ UnLa
+ </p>
+ </th>
+<th>
+ <p>
+ UnLa
+ </p>
+ </th>
+<th>
+ <p>
+ Ticket
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ do_test_member_fork
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and get
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_member_fork_m
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and get
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_member_fork_bind
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and get
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_member_fork_bind_m
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and get
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_fork
+ </p>
+ </td>
+<td>
+ <p>
+ Forks a nullary function and get
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_fork_1
+ </p>
+ </td>
+<td>
+ <p>
+ Forks a unary function and get
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_fork_1_m
+ </p>
+ </td>
+<td>
+ <p>
+ Forks a unary function and get
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_creation_through_functor
+ </p>
+ </td>
+<td>
+ <p>
+ Forks a functor
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_creation_through_reference_wrapper
+ </p>
+ </td>
+<td>
+ <p>
+ Forks a reference wrapper
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and waits
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait_until
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and waits until a given time
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait_for
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and waits for a given time
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_get
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and get
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait_all
+ </p>
+ </td>
+<td>
+ <p>
+ Forks several and waits all
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait_all_until
+ </p>
+ </td>
+<td>
+ <p>
+ Forks several and waits all until a given time
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait_all_for
+ </p>
+ </td>
+<td>
+ <p>
+ Forks several and waits all for a given time
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_set_all
+ </p>
+ </td>
+<td>
+ <p>
+ Forks several and get all using set_all
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_get_all
+ </p>
+ </td>
+<td>
+ <p>
+ Forks several and get all
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Fail
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait_for_all
+ </p>
+ </td>
+<td>
+ <p>
+ wait for all
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait_for_any
+ </p>
+ </td>
+<td>
+ <p>
+ waits for any
+ </p>
+ </td>
+<td>
+ <p>
+ Fail
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_wait_for_any_fusion_sequence
+ </p>
+ </td>
+<td>
+ <p>
+ Wait for any in a fusion sequence
+ </p>
+ </td>
+<td>
+ <p>
+ Fail
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_member_fork_detach
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and detach
+ </p>
+ </td>
+<td>
+ <p>
+ Fail
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_thread_interrupts_at_interruption_point
+ </p>
+ </td>
+<td>
+ <p>
+ Interrupt
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_join
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and join
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_join_until
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and joins until a given time
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_join_for
+ </p>
+ </td>
+<td>
+ <p>
+ Forks and joins for a given time
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_join_all
+ </p>
+ </td>
+<td>
+ <p>
+ Forks several and join all
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_join_all_until
+ </p>
+ </td>
+<td>
+ <p>
+ Forks several and join all until a given time
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_join_all_for
+ </p>
+ </td>
+<td>
+ <p>
+ Forks several and join all for a given time
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ----
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_fork_after_join
+ </p>
+ </td>
+<td>
+ <p>
+ Fork after some dependent ACT and then join
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_fork_after_wait
+ </p>
+ </td>
+<td>
+ <p>
+ Fork after some dependent ACT and then wait
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ do_test_fork_after_get
+ </p>
+ </td>
+<td>
+ <p>
+ Fork after some dependent ACT and then get the value
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ XXXXXXXXXXXXXXXXXXXXXX
+ </p>
+ </td>
+<td>
+ <p>
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ </p>
+ </td>
+<td>
+ <p>
+ XXXX
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ ????
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgments.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tickets.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/appendices/tickets.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/appendices/tickets.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Appendix F: Tickets</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="tests.html" title=" Appendix E: Tests">
+<link rel="next" href="todo.html" title=" Appendix G: Future
+ plans">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tests.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.appendices.tickets"></a> Appendix F: Tickets
+</h3></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td>
+ <p>
+ Kind
+ </p>
+ </td>
+<td>
+ <p>
+ Identifier
+ </p>
+ </td>
+<td>
+ <p>
+ Description
+ </p>
+ </td>
+<td>
+ <p>
+ Resolution
+ </p>
+ </td>
+<td>
+ <p>
+ State
+ </p>
+ </td>
+<td>
+ <p>
+ Tests
+ </p>
+ </td>
+<td>
+ <p>
+ Version
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tests.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/appendices/todo.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/appendices/todo.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,167 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Appendix G: Future
+ plans</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="tickets.html" title=" Appendix F: Tickets">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tickets.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.appendices.todo"></a><a href="todo.html" title=" Appendix G: Future
+ plans"> Appendix G: Future
+ plans</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review">Tasks
+ to do before review</a></span></dt>
+<dt><span class="section"><a href="todo.html#toward_boost_async.appendices.todo.for_later_releases">For
+ later releases</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review"></a><a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review" title="Tasks
+ to do before review">Tasks
+ to do before review</a>
+</h4></div></div></div>
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review.add_an_overloading_for_wait_for_all_in_sequence_ae__f__seq_"></a><h5>
+<a name="id4894972"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review.add_an_overloading_for_wait_for_all_in_sequence_ae__f__seq_">Add
+ an overloading for wait_for_all_in_sequence(ae, f, seq)</a>
+ </h5>
+<p>
+ This will be quite useful on recursive algorithms evaluating asynchronously
+ the same function on different parts.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">DirectSolver</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">Composer</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">AsynchronousExecutor</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">Input</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">inplace_solve</span><span class="special">(</span><span class="identifier">AsynchronousExecutor</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">Problem</span><span class="special">&</span> <span class="identifier">input</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// if (problem is small)
+</span> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">size</span><span class="special">(</span><span class="identifier">range</span><span class="special">)</span> <span class="special"><</span> <span class="identifier">concurrency_threshold</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// directly solve problem
+</span> <span class="identifier">DirectSolver</span><span class="special">()(</span><span class="identifier">input</span><span class="special">);</span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="comment">// split problem into independent parts
+</span> <span class="identifier">BOOST_AUTO</span><span class="special">(</span><span class="identifier">partition</span><span class="special">,</span> <span class="identifier">partition_view</span><span class="special">(</span><span class="identifier">input</span><span class="special">));</span>
+ <span class="comment">// evaluates asynchronously inplace_solve on each element of the partition
+</span> <span class="comment">// using the asynchronous executor as scheduler
+</span> <span class="identifier">wait_for_all_in_sequence</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">inplace_solve</span><span class="special">,</span> <span class="identifier">partition</span><span class="special">);</span>
+ <span class="comment">// compose the result in place from subresults
+</span> <span class="identifier">Composer</span><span class="special">()(</span><span class="identifier">partition</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review.add_polymorphic_act_and_adapters"></a><h5>
+<a name="id4895384"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review.add_polymorphic_act_and_adapters">Add
+ polymorphic act and adapters</a>
+ </h5>
+<p>
+ When we need to chain <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ using the fork_after the nature of the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ can change over time, an why not change also its template parameter. So
+ at least we need to make polymorphic every function used by fork_after.
+ </p>
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review.complete_the_tests"></a><h5>
+<a name="id4895438"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review.complete_the_tests">Complete
+ the tests</a>
+ </h5>
+<p>
+ Even if the current release include some test there is yet a long way before
+ been able to review the library.
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ change the test so they take less time using locks; conditions and variables.
+ </li>
+<li>
+ Complete the test for the AE/ACT framework
+ </li>
+<li>
+ Add test with functions throwing
+ </li>
+</ul></div>
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review.add_more_examples"></a><h5>
+<a name="id4895484"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review.add_more_examples">Add
+ more examples</a>
+ </h5>
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review.complete_the_reference"></a><h5>
+<a name="id4895509"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review.complete_the_reference">Complete
+ the reference</a>
+ </h5>
+<div class="itemizedlist"><ul type="disc"><li>
+ ae/act framework
+ </li></ul></div>
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review.change_the_rational_and_implementation_sections"></a><h5>
+<a name="id4895542"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review.change_the_rational_and_implementation_sections">Change
+ the rational and implementation sections</a>
+ </h5>
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review.use_boost_chrono"></a><h5>
+<a name="id4895567"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review.use_boost_chrono">Use
+ Boost.Chrono</a>
+ </h5>
+<a name="toward_boost_async.appendices.todo.tasks_to_do_before_review.add_c__0x_move_semantics_on_compilers_supporting_it_and_use_the_boost_move_emulation_otherwise"></a><h5>
+<a name="id4895589"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.tasks_to_do_before_review.add_c__0x_move_semantics_on_compilers_supporting_it_and_use_the_boost_move_emulation_otherwise">Add
+ C++0x move semantics on compilers supporting it and use the Boost.Move
+ emulation otherwise</a>
+ </h5>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.appendices.todo.for_later_releases"></a><a href="todo.html#toward_boost_async.appendices.todo.for_later_releases" title="For
+ later releases">For
+ later releases</a>
+</h4></div></div></div>
+<a name="toward_boost_async.appendices.todo.for_later_releases.use_c__0x_variadic_templates_on_compilers_supporting_it_and_use_the_preprocessor_otherwise"></a><h5>
+<a name="id4895639"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.for_later_releases.use_c__0x_variadic_templates_on_compilers_supporting_it_and_use_the_preprocessor_otherwise">Use
+ C++0x variadic templates on compilers supporting it and use the preprocessor
+ otherwise</a>
+ </h5>
+<a name="toward_boost_async.appendices.todo.for_later_releases.use_c__0x_concepts_on_compilers_supporting_them_and_use_the_boost_conceptcheck_or_boost_concepttraits_otherwise"></a><h5>
+<a name="id4895670"></a>
+ <a href="todo.html#toward_boost_async.appendices.todo.for_later_releases.use_c__0x_concepts_on_compilers_supporting_them_and_use_the_boost_conceptcheck_or_boost_concepttraits_otherwise">Use
+ C++0x Concepts on compilers supporting them and use the Boost.ConceptCheck
+ or Boost.ConceptTraits otherwise</a>
+ </h5>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tickets.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/examples.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/examples.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Examples</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost Async">
+<link rel="up" href="../index.html" title="Toward Boost Async">
+<link rel="prev" href="reference/ae_act_models_reference.html" title="AE/ACT
+ Models Reference">
+<link rel="next" href="examples/parallel_sort.html" title="Parallel sort">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/ae_act_models_reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="examples/parallel_sort.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_async.examples"></a>Examples
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Parallel sort</span></dt>
+<dt><span class="section"><a href="examples/from_a_single_to_a_multi_threaded_application.html">From
+ a single to a multi threaded application</a></span></dt>
+</dl></div>
+<p>
+ This section do includes complete examples using the library.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/ae_act_models_reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="examples/parallel_sort.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/examples/from_a_single_to_a_multi_threaded_application.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/examples/from_a_single_to_a_multi_threaded_application.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,44 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>From
+ a single to a multi threaded application</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="parallel_sort.html" title="Parallel sort">
+<link rel="next" href="../appendices.html" title="Appendices">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parallel_sort.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../appendices.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.examples.from_a_single_to_a_multi_threaded_application"></a><a href="from_a_single_to_a_multi_threaded_application.html" title="From
+ a single to a multi threaded application">From
+ a single to a multi threaded application</a>
+</h3></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parallel_sort.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../appendices.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/examples/parallel_sort.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/examples/parallel_sort.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,118 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Parallel sort</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="../examples.html" title="Examples">
+<link rel="next" href="from_a_single_to_a_multi_threaded_application.html" title="From
+ a single to a multi threaded application">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../examples.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="from_a_single_to_a_multi_threaded_application.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.examples.parallel_sort"></a>Parallel sort
+</h3></div></div></div>
+<p>
+ Next follows a generic algorithm based on partitioning of a given problem
+ in smaller problems, and compose a solution from the solution of the smaller
+ problems.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">DirectSolver</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">Composer</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">Range</span>
+<span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">inplace_solve</span><span class="special">(</span> <span class="identifier">AE</span> <span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_iterator</span><span class="special"><</span><span class="identifier">Range</span><span class="special">>::</span><span class="identifier">type</span><span class="special">></span> <span class="identifier">range</span><span class="special">,</span>
+ <span class="keyword">unsigned</span> <span class="identifier">cutoff</span> <span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">DirectSolver</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">Composer</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">Range</span>
+<span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">inplace_solve</span><span class="special">(</span> <span class="identifier">AE</span> <span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_iterator</span><span class="special"><</span><span class="identifier">Range</span><span class="special">>::</span><span class="identifier">type</span><span class="special">></span> <span class="identifier">range</span><span class="special">,</span>
+ <span class="keyword">unsigned</span> <span class="identifier">cutoff</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">unsigned</span> <span class="identifier">size</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">size</span><span class="special">(</span><span class="identifier">range</span><span class="special">);</span>
+ <span class="comment">//std::cout << "<<par_ " << size;
+</span> <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">size</span> <span class="special"><=</span> <span class="identifier">cutoff</span><span class="special">)</span> <span class="identifier">DirectSolver</span><span class="special">()(</span><span class="identifier">range</span><span class="special">);</span>
+ <span class="keyword">else</span> <span class="special">{</span>
+ <span class="identifier">partition</span><span class="special"><</span><span class="identifier">Range</span><span class="special">></span> <span class="identifier">parts</span><span class="special">(</span><span class="identifier">range</span><span class="special">,</span> <span class="identifier">BOOST_PARTS</span><span class="special">);</span>
+
+ <span class="comment">// wait_for_all_in_sequence(ae, &inplace_solve<DirectSolver,Composer,AE,Range>, parts);
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special"><</span><span class="identifier">task_type</span><span class="special">></span> <span class="identifier">tasks</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span><span class="identifier">i</span> <span class="special"><</span> <span class="identifier">BOOST_PARTS</span><span class="special">-</span><span class="number">1</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">task_type</span> <span class="identifier">tmp</span><span class="special">(</span><span class="identifier">ae</span><span class="special">.</span><span class="identifier">submit</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(</span>
+ <span class="special">&</span><span class="identifier">inplace_solve</span><span class="special"><</span><span class="identifier">DirectSolver</span><span class="special">,</span><span class="identifier">Composer</span><span class="special">,</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">Range</span><span class="special">>,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">ae</span><span class="special">),</span>
+ <span class="identifier">parts</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span>
+ <span class="identifier">cutoff</span>
+ <span class="special">)));</span>
+ <span class="identifier">tasks</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">tmp</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="identifier">inplace_solve</span><span class="special"><</span><span class="identifier">DirectSolver</span><span class="special">,</span><span class="identifier">Composer</span><span class="special">,</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">Range</span><span class="special">>(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">parts</span><span class="special">[</span><span class="identifier">BOOST_PARTS</span><span class="special">-</span><span class="number">1</span><span class="special">],</span> <span class="identifier">cutoff</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">tasks</span><span class="special">,</span> <span class="special">&</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">wait_act</span><span class="special"><</span><span class="identifier">task_type</span><span class="special">>);</span>
+ <span class="comment">// wait_for_all_in_sequence
+</span>
+ <span class="identifier">Composer</span><span class="special">()(</span><span class="identifier">range</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+</pre>
+<p>
+ So parallel sort could be
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">sort_fct</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">RandomAccessRange</span><span class="special">></span>
+ <span class="identifier">RandomAccessRange</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">RandomAccessRange</span> <span class="identifier">rng</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">sort</span><span class="special">(</span><span class="identifier">rng</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">struct</span> <span class="identifier">inplace_merge_fct</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalRange</span><span class="special">></span>
+ <span class="identifier">BidirectionalRange</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">()(</span> <span class="identifier">BidirectionalRange</span> <span class="identifier">rng</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">inplace_merge</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">)+(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">size</span><span class="special">(</span><span class="identifier">rng</span><span class="special">)/</span><span class="number">2</span><span class="special">));</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Range</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">parallel_sort</span><span class="special">(</span><span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">Range</span><span class="special">&</span> <span class="identifier">range</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">cutoff</span><span class="special">=</span><span class="number">10000</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_iterator</span><span class="special"><</span><span class="identifier">Range</span><span class="special">>::</span><span class="identifier">type</span><span class="special">></span> <span class="identifier">rng</span><span class="special">(</span><span class="identifier">range</span><span class="special">);</span>
+ <span class="identifier">inplace_solve</span><span class="special"><</span><span class="identifier">sort_fct</span><span class="special">,</span><span class="identifier">inplace_merge_fct</span><span class="special">,</span><span class="identifier">pool_type</span><span class="special">,</span><span class="identifier">Range</span><span class="special">>(</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">rng</span><span class="special">,</span> <span class="identifier">cutoff</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../examples.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="from_a_single_to_a_multi_threaded_application.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/overview.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/overview.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,194 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Overview</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost Async">
+<link rel="up" href="../index.html" title="Toward Boost Async">
+<link rel="prev" href="../index.html" title="Toward Boost Async">
+<link rel="next" href="overview/motivation.html" title=" Motivation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="overview/motivation.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_async.overview"></a> Overview
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Motivation</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="overview/motivation.html#toward_boost_async.overview.motivation.asynchronous_executors_and_asynchronous_completion_token_handles">Asynchronous
+ Executors and Asynchronous Completion Token Handles</a></span></dt>
+<dt><span class="section">Threader/Joiner</span></dt>
+</dl></dd>
+</dl></div>
+<a name="toward_boost_async.overview.description"></a><h3>
+<a name="id4803159"></a>
+ Description
+ </h3>
+<p>
+ Boost.Async is a C++ library to allow the calling of functions and functors
+ in an asynchronous manner, thereby making it easier to improve the level of
+ concurrency and parallelism in your applications. It provides:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ An asynchronous execution framework working with <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ and <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ It includes some generic functions and several <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ and <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>:
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ fork and fork_all to execute asynchronously functions
+ </li>
+<li>
+ fork_after: request an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ to execute a function asynchronously once each one of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in the dependency tuple parameter are ready. It is similar to the async_with_dependencies
+ proposed Peter Dimov.
+ </li>
+<li>
+ generic get, join, ... free functions to synchronize on an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+</li>
+<li>
+ generic get_all, join_all, ... free functions to synchronize on multiple
+ <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+</li>
+<li>
+ generic wait_for_all, wait_for_any to execute asynchronously functions
+ and wait for the completion of all or any of them.
+ </li>
+</ul></div>
+</li>
+<li>
+ Some <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ and <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ models
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ immediate executors: executes synchronously a function on the current
+ thread. Often used for test purposes
+ </li>
+<li>
+ basic_threader: can be seen as a thread factory executing asynchronously
+ a function on the returned thread.
+ </li>
+<li>
+ launchers: Lanchers can be seen as a future factory executing asynchronously
+ a function on a hidden thread.
+ </li>
+<li>
+ threader/joiner: A Threader runs a unary function in its own thread.
+ A Threader can be seen as a Joiner factory executing asynchronously a
+ function on a thread encapsulated on the returned Joiner. The joiner
+ is used to synchronize with and pick up the result from a function or
+ to manage the encapsulated thread.
+ </li>
+<li>
+<code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code> and <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code>
+ customization as an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ and an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ respectively. <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code> can be seen as a <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code> factory executing asynchronously
+ a function on a pool of threads.
+ </li>
+<li>
+ a generic asynchronous_executor_decorator which allows to decorate the
+ function to be evaluated asynchronously.
+ </li>
+</ul></div>
+</li>
+</ul></div>
+<p>
+ References
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+ The threader-joiner classes are based on the original idea of Kevlin Henney
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1883.pdf" target="_top">N1833
+ - Preliminary Threading Library Proposal for TR2</a>
+</li></ul></div>
+<a name="toward_boost_async.overview.how_to_use_this_documentation"></a><h3>
+<a name="id4764943"></a>
+ <a href="overview.html#toward_boost_async.overview.how_to_use_this_documentation">How
+ to Use This Documentation</a>
+ </h3>
+<p>
+ This documentation makes use of the following naming and formatting conventions.
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span>
+ <span class="identifier">font</span></code> and is syntax-highlighted.
+ </li>
+<li>
+ Replaceable text that you will need to supply is in
+ <em class="replaceable"><code>
+ italics
+ </code></em>
+ .
+ </li>
+<li>
+ If a name refers to a free function, it is specified like this: <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code>
+ to indicate that it is a free function.
+ </li>
+<li>
+ If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special"><></span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special"><></span></code>
+ to indicate that it is a class template.
+ </li>
+<li>
+ If a name refers to a function-like macro, it is specified like this: <code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
+ that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
+ macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
+ </li>
+<li>
+ Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
+ sense are specified in CamelCase.
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ In addition, notes such as this one specify non-essential information that
+ provides additional background or rationale.
+ </p></td></tr>
+</table></div>
+<p>
+ Finally, you can mentally add the following to any code fragments in this document:
+ </p>
+<pre class="programlisting"><span class="comment">// Include all of Async
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">async</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="comment">// Create a namespace aliases
+</span><span class="keyword">namespace</span> <span class="identifier">basync</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="overview/motivation.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/overview/motivation.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/overview/motivation.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,740 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Motivation</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../overview.html" title=" Overview">
+<link rel="prev" href="../overview.html" title=" Overview">
+<link rel="next" href="../users_guide.html" title=" Users'Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../overview.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../users_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.overview.motivation"></a> Motivation
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="motivation.html#toward_boost_async.overview.motivation.asynchronous_executors_and_asynchronous_completion_token_handles">Asynchronous
+ Executors and Asynchronous Completion Token Handles</a></span></dt>
+<dt><span class="section">Threader/Joiner</span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.overview.motivation.asynchronous_executors_and_asynchronous_completion_token_handles"></a><a href="motivation.html#toward_boost_async.overview.motivation.asynchronous_executors_and_asynchronous_completion_token_handles" title="Asynchronous
+ Executors and Asynchronous Completion Token Handles">Asynchronous
+ Executors and Asynchronous Completion Token Handles</a>
+</h4></div></div></div>
+<p>
+ In <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1883.pdf" target="_top">N1833
+ - Preliminary Threading Library Proposal for TR2</a> Kevlin Henney
+ introduces the concept of <code class="computeroutput"><span class="identifier">threader</span></code>
+ an asynchronous executor and a function <code class="computeroutput"><span class="identifier">thread</span><span class="special">()</span></code> that evaluates a function asynchronously
+ and returns an asynchronous completion token <code class="computeroutput"><span class="identifier">joiner</span></code>,
+ able to join but also to get the value of the function result.
+ </p>
+<p>
+ In <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2185.html" target="_top">N2185
+ - Proposed Text for Parallel Task Execution</a> Peter Dimov introduces
+ a <code class="computeroutput"><span class="identifier">fork</span><span class="special">()</span></code>
+ function able to evaluate a function asynchronously and returns a <code class="computeroutput"><span class="identifier">future</span></code> handle.
+ </p>
+<p>
+ In <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2276.html" target="_top">N2276
+ - Thread Pools and Futures</a> Anthony William introduces <code class="computeroutput"><span class="identifier">launch_in_thread</span></code> and <code class="computeroutput"><span class="identifier">launch_in_pool</span></code>
+ function templates which evaluates a function asynchronously either in
+ a specific <code class="computeroutput"><span class="identifier">thread</span></code> or a
+ thread pool and returns a <code class="computeroutput"><span class="identifier">unique_future</span></code>
+ handle.
+ </p>
+<p>
+ In Boost.ThreadPool
+ Oliver Kowalke proposes a complete implementation of a thread <code class="computeroutput"><span class="identifier">pool</span></code> with a <code class="computeroutput"><span class="identifier">submit</span><span class="special">()</span></code> function which evaluates a function asynchronously
+ and returns a <code class="computeroutput"><span class="identifier">task</span></code> handle.
+ </p>
+<p>
+ Behind all these proposals there is a concept of asynchronous executor,
+ fork-like function and the asynchronous completion token handle.
+ </p>
+<div class="table">
+<a name="id4765459"></a><p class="title"><b>Table 1. AE/ACT/fork-like relationship</b></p>
+<table class="table" summary="AE/ACT/fork-like relationship">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Proposal</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>executor</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>fork-like</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>ACT handle</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Boost.Thread
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">thread</span></code> class
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">thread</span><span class="special">()</span></code>
+ constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Boost.ThreadPool
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">submit</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ N2276
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">launch_in_thread</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ N2276
+ </p>
+ </td>
+<td>
+ <p>
+ thread_pool
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">launch_in_pool</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ N2185
+ </p>
+ </td>
+<td>
+ <p>
+ thread pool
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">fork</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ N1833
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">threader</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">thread</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">joiner</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<p>
+ The asynchronous completion token models can follow two interfaces, the
+ thread interface and the future interface. Some asynchronous completion
+ tokens handle allow to recover the result of the evaluation of the function,
+ others allow to manage the underlying thread of execution.
+ </p>
+<p>
+ It seems natural to make a generic <span class="underline">_fork</span>_
+ function that will evaluate a function asynchronously with respect to the
+ calling thread and returns an ACT handle. The following meta-function associates
+ an ACT handle to an asynchronous executor.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">asynchronous_completion_token</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">handle</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The result of forking a nullary function by an asynchronous executor is
+ given by the metafunction result_of::fork<AE,F>
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">__c_fork__</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">result_type</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The default implementation of fork delegates on fork asynchronous executor
+ function.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span> <span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">fork</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">ae</span><span class="special">.</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">fn</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Forking n-ary functions rely on the nullary version and bind.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">An</span> <span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">A1</span><span class="special">,...,</span> <span class="identifier">An</span><span class="special">)>::</span><span class="identifier">type</span> <span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">fork</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">A1</span> <span class="identifier">a1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">An</span> <span class="identifier">an</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">ae</span><span class="special">.</span><span class="identifier">fork</span><span class="special">(</span> <span class="identifier">bind</span><span class="special">(</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">a1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">an</span> <span class="special">)</span> <span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ We can define a basic_threader which just returns a new thread as follows:
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">basic_threader</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">thread</span> <span class="identifier">th</span><span class="special">(</span><span class="identifier">f</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">th</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The library includes also a launcher class that creates a thread and returns
+ a unique_future when forking
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">launcher</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="identifier">packaged_task</span><span class="special"><</span><span class="identifier">result_type</span><span class="special">></span> <span class="identifier">tsk</span><span class="special">(</span><span class="identifier">f</span><span class="special">);</span>
+ <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">result_type</span><span class="special">></span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">tsk</span><span class="special">.</span><span class="identifier">get_future</span><span class="special">();</span>
+ <span class="identifier">thread</span> <span class="identifier">th</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">tsk</span><span class="special">));</span>
+ <span class="keyword">return</span> <span class="identifier">res</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ and a shared_launcher class that creates a thread and returns a shared_future
+ when forking.
+ </p>
+<p>
+ Given the sequential example:
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">f</span><span class="special">(</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">r</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
+
+ <span class="keyword">for</span><span class="special">(</span> <span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><=</span> <span class="identifier">n</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">1.0</span> <span class="special">/</span> <span class="identifier">i</span><span class="special">;</span>
+ <span class="identifier">r</span> <span class="special">+=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span><span class="special">(</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">a</span> <span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">m1</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">(</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">1000000</span> <span class="special">);</span>
+ <span class="keyword">double</span> <span class="identifier">m2</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">(</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">5000000</span> <span class="special">);</span>
+ <span class="keyword">double</span> <span class="identifier">m3</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">(</span> <span class="number">2.2</span><span class="special">,</span> <span class="number">1000000</span> <span class="special">);</span>
+ <span class="keyword">double</span> <span class="identifier">m4</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">(</span> <span class="number">2.2</span><span class="special">,</span> <span class="number">5000000</span> <span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">m2</span> <span class="special">-</span> <span class="identifier">m1</span> <span class="special">+</span> <span class="identifier">m3</span> <span class="special">-</span> <span class="identifier">m4</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The library allows a programmer to switch to parallel execution as follows:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">launcher</span> <span class="identifier">l</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">fm1</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">1000000</span> <span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">fm2</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">5000000</span> <span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">fm3</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">2.2</span><span class="special">,</span> <span class="number">1000000</span> <span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">fm4</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">2.2</span><span class="special">,</span> <span class="number">5000000</span> <span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fm2</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special">-</span> <span class="identifier">fm1</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">fm3</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special">-</span> <span class="identifier">fm4</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The question now is how we can adapt the example to an existing asynchronous
+ executor such as the Boost.ThreadPool library. We need to specialize the
+ template class asynchronous_completion_token to state which is the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code> associate
+ to the <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Channel</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>,</span><span class="identifier">T</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}}</span>
+</pre>
+<p>
+ and also to specialize the fork function as the default one requires a
+ fork member function and <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code>
+ provides a <code class="computeroutput"><span class="identifier">submit</span><span class="special">()</span></code>
+ member function`
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+<span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Channel</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span> <span class="special">></span>
+<span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>,</span> <span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">fork</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>,</span><span class="identifier">F</span><span class="special">>(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">ae</span><span class="special">.</span><span class="identifier">submit</span><span class="special">(</span><span class="identifier">fn</span><span class="special">);</span>
+<span class="special">}</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Evidently these specializations must be done on the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span></code>
+ namespace.
+ </p>
+<p>
+ As the preceding is ilegal in C++03 we need to use an auxiliary class to
+ define the default behaviour of the fork function
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">ae</span><span class="special">.</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">fn</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+<span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span> <span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">fork</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">>::</span><span class="identifier">apply</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span><span class="identifier">fn</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ And specialize partially the partial_specialization_workaround::fork class
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Channel</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>,</span><span class="identifier">F</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>,</span> <span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">ae</span><span class="special">.</span><span class="identifier">submit</span><span class="special">(</span><span class="identifier">fn</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+<span class="special">}}</span>
+</pre>
+<p>
+ Note that only the <span class="underline">_fork</span>_ function
+ needs to be specialized. The library provides the other overloadings.
+ </p>
+<p>
+ We can write the preceding main function in a more generic way
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">></span>
+<span class="keyword">void</span> <span class="keyword">do</span><span class="special">(</span><span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(*)(</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">auto_type</span><span class="special">;</span>
+ <span class="identifier">auto_type</span> <span class="identifier">fm1</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">1000000</span> <span class="special">);</span>
+ <span class="identifier">auto_type</span> <span class="identifier">fm2</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">5000000</span> <span class="special">);</span>
+ <span class="identifier">auto_type</span> <span class="identifier">fm3</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">2.2</span><span class="special">,</span> <span class="number">1000000</span> <span class="special">);</span>
+ <span class="identifier">auto_type</span> <span class="identifier">fm4</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">2.2</span><span class="special">,</span> <span class="number">5000000</span> <span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">fm2</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special">-</span> <span class="identifier">fm1</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">fm3</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special">-</span> <span class="identifier">fm4</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">launcher</span> <span class="identifier">ae</span><span class="special">;</span>
+ <span class="keyword">do</span><span class="special">(</span><span class="identifier">ae</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ and we can switch from using the launcher or the tp::pool just by changing
+ one line
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><></span> <span class="identifier">ae</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">poolsize</span><span class="special">(</span><span class="number">6</span><span class="special">))</span>
+ <span class="keyword">do</span><span class="special">(</span><span class="identifier">ae</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Instead of defining a type, the user can make use of BOOST_AUTO once the
+ associated files included on the threadpool sub-directory.
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_AUTO</span><span class="special">(</span><span class="identifier">fm1</span><span class="special">,</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">1000000</span> <span class="special">));</span>
+</pre>
+<p>
+ As a extreme case the library provides a immediate executor which allows
+ to execute synchronously the function on the current thread. This can be
+ used for test purposes. Note that this executor can not be used when there
+ are dependencies between the children <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ and the parent <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<p>
+ The library allows also to fork several functions at one time
+ </p>
+<pre class="programlisting"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)()>::</span><span class="identifier">type</span> <span class="identifier">handles</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">h</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">res</span><span class="special">).</span><span class="identifier">get</span><span class="special">()</span> <span class="special">-</span> <span class="identifier">get</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">res</span><span class="special">).</span><span class="identifier">get</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">get</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">res</span><span class="special">).</span><span class="identifier">get</span><span class="special">()</span> <span class="special"><&
lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ The result of the fork_all operation is a fusion tuple of asynchronous
+ completion token handles. The user can apply any fusion algorithm on this
+ tuple as for example
+ </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">b</span> <span class="special">=</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">none</span><span class="special">(</span><span class="identifier">handles</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">interruption_requested</span><span class="special">());</span>
+</pre>
+<p>
+ The asynchronous completion token models follows two interfaces, the thread
+ interface and the unique_/shared_future interface.
+ </p>
+<p>
+ To make common tasks easier the library provides some functors in the name
+ space fct: for the thread interface as
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ fct::join
+ </li>
+<li>
+ fct::join_until
+ </li>
+<li>
+ fct::join_for
+ </li>
+<li>
+ fct::detach
+ </li>
+<li>
+ fct::interrupt
+ </li>
+<li>
+ fct::interrupt_requested
+ </li>
+</ul></div>
+<p>
+ and for the future operations as
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ fct::get
+ </li>
+<li>
+ fct::wait
+ </li>
+<li>
+ fct::wait_until
+ </li>
+<li>
+ fct::wait_for
+ </li>
+<li>
+ fct::is_ready
+ </li>
+<li>
+ fct::has_value
+ </li>
+<li>
+ fct::has_exception
+ </li>
+</ul></div>
+<p>
+ Here is an example for get:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">get</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">::</span><span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">t</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">get</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<p>
+ In addition the library provides some non member functions that are the
+ result of applying these functors to the tuple using a fusion algorithm:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ join_all
+ </li>
+<li>
+ join_all_until
+ </li>
+<li>
+ join_all_for
+ </li>
+<li>
+ detach_all
+ </li>
+<li>
+ interrupt_all
+ </li>
+<li>
+ interrupt_requested_on_all
+ </li>
+<li>
+ get_all
+ </li>
+<li>
+ wait_all
+ </li>
+<li>
+ wait_all_until
+ </li>
+<li>
+ wait_all_for
+ </li>
+<li>
+ are_all_ready
+ </li>
+<li>
+ have_all_value
+ </li>
+<li>
+ have_all_exception
+ </li>
+</ul></div>
+<p>
+ Next follows how get_all is defined.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MovableTuple</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">get_all</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">get</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The library defines in a systematic way the result_of of a function as
+ a metafunction having the same name as the function on the namespace result_of,
+ as the Boost.Fusion library does.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">transform</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">get</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<p>
+ So the user can do the following
+ </p>
+<pre class="programlisting"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)()>::</span><span class="identifier">type</span> <span class="identifier">res</span> <span class="special">=</span>
+ <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">h</span><span class="special">);</span>
+<span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_all</span><span class="special"><</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)()>::</span><span class="identifier">type</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">values</span> <span class="special">=</span>
+ <span class="identifier">basync</span><span class="special">::</span><span class="identifier">get_all</span><span class="special">(</span><span class="identifier">handles</span><span class="special">);</span>
+</pre>
+<p>
+ or using a typedef
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)()>::</span><span class="identifier">type</span> <span class="identifier">auto_type</span><span class="special">;</span>
+<span class="identifier">auto_type</span> <span class="identifier">handles</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">h</span><span class="special">);</span>
+<span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_all</span><span class="special"><</span><span class="identifier">auto_type</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">values</span><span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">get_all</span><span class="special">(</span><span class="identifier">handles</span><span class="special">);</span>
+</pre>
+<p>
+ Note that the notation can be shortened by using the C++0x auto keyword.
+ </p>
+<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">h</span><span class="special">);</span>
+<span class="keyword">auto</span> <span class="identifier">values</span> <span class="special">=</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">get_all</span><span class="special">(</span><span class="identifier">handles</span><span class="special">);</span>
+</pre>
+<p>
+ or using BOOST_AUTO
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_AUTO</span><span class="special">(</span><span class="identifier">res</span><span class="special">,</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">h</span><span class="special">));</span>
+<span class="identifier">BOOST_AUTO</span><span class="special">(</span><span class="identifier">values</span><span class="special">,</span> <span class="identifier">basync</span><span class="special">::</span><span class="identifier">get_all</span><span class="special">(</span><span class="identifier">handles</span><span class="special">));</span>
+</pre>
+<p>
+ Last but not least the library provides also some sugaring functions like
+ wait_for_all that forks and wait for the completion of all the functions.
+ </p>
+<pre class="programlisting"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)()>::</span><span class="identifier">type</span> <span class="identifier">res</span> <span class="special">=</span>
+ <span class="identifier">basync</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">h</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">res</span><span class="special">)</span> <span class="special">-</span> <span class="identifier">get</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">res</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">get</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">res</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ and wait_for_any, which works only with functions that return the same
+ type or are convertible to the same type, and return the index and the
+ value of any of the completed functions.
+ </p>
+<pre class="programlisting"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_any</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)(),</span> <span class="keyword">int</span><span class="special">(*)()>::</span><span class="identifier">type</span> <span class="identifier">res</span> <span class="special">=</span>
+ <span class="identifier">basync</span><span class="special">::</span><span class="identifier">wait_for_any</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">h</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"function "</span> <span class="special"><<</span> <span class="identifier">res</span><span class="special">.</span><span class="identifier">first</span>
+ <span class="special"><<</span> <span class="string">" finshed first with result="</span> <span class="special"><<</span> <span class="identifier">res</span><span class="special">.</span><span class="identifier">second</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ The current implementation use the wait_for_any function so any AE must
+ provide a way to get a unique|shared_future from its <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<p>
+ The library defines a functor allowing the user to specialize it
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">get_future</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">get_future</span><span class="special">();</span> <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Resuming a simple way to define a new AsynchronousExecutor is to define
+ a class as
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">AsynchronousExecutor</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">implementation</span><span class="special">-</span><span class="identifier">specific</span><span class="special">-</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">modeling</span><span class="special">-</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">ACT</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">handle</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.overview.motivation.threader_joiner"></a>Threader/Joiner
+</h4></div></div></div>
+<p>
+ See the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1883.pdf" target="_top">N1833
+ - Preliminary Threading Library Proposal for TR2</a> where Kevlin Henney
+ introduces the concept of threader as an asynchronous executor and a function
+ thread that evaluates a function asynchronously and returns an asynchronous
+ completion token joiner, able to join but also to get the value of the
+ function result.
+ </p>
+<p>
+ The main specificity is that here we make a difference between unique_joiner
+ (move-only) and shared_joiner and as consequence unique_threader and shared_threader.
+ </p>
+<p>
+ The second specificity concerns the fact joiners can detach, terminate,
+ ... on destruction.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../overview.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../users_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/reference.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/reference.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,94 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Reference</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost Async">
+<link rel="up" href="../index.html" title="Toward Boost Async">
+<link rel="prev" href="users_guide/glossary.html" title=" Glossary">
+<link rel="next" href="reference/concepts.html" title="Concepts">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="users_guide/glossary.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/concepts.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_async.reference"></a> Reference
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Concepts</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts">Asynchronous
+ Completion Token Concepts</a></span></dt>
+<dt><span class="section"><a href="reference/concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts">Asynchronous
+ Executors Concepts</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/ae_act_framework_reference.html">AE/ACT
+ Framework Reference</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.act_traits_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">act_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations">AE
+ operations</a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.algorithm_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations">Future
+ based ACT operations</a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations">Thread
+ based ACT operations</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html">AE/ACT
+ Models Reference</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.future_traits_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">future_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">immediate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.basic_threader_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">launcher</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.scheduler_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">scheduler</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_futures_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">future</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_launcher_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">launcher</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_threader_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_basic_threaderr_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_scheduler_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">scheduler</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.asynchronous_executor_decorator_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">asynchronous_executor_decorator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="users_guide/glossary.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/concepts.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/reference/ae_act_framework_reference.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/reference/ae_act_framework_reference.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,2965 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>AE/ACT
+ Framework Reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="concepts.html" title="Concepts">
+<link rel="next" href="ae_act_models_reference.html" title="AE/ACT
+ Models Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="concepts.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="ae_act_models_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference"></a><a href="ae_act_framework_reference.html" title="AE/ACT
+ Framework Reference">AE/ACT
+ Framework Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.act_traits_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">act_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations">AE
+ operations</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork_after</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_any</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.algorithm_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations">Future
+ based ACT operations</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_until_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.is_ready_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">is_ready</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.has_value_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">has_value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.has_exception_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">has_exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_all_until_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_all_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.are_all_ready_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">are_all_ready</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.have_all_value_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">have_all_value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.have_all_exception_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">have_some_exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations">Thread
+ based ACT operations</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.detach_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">detach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.joinable_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">joinable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_until_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interrupt_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interrupt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interruption_requested_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interruption_requested</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.detach_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">detach_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.are_all_joinable_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">are_all_joinable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_all_until_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_all_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interrupt_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interrupt_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interruption_requested_on_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interruption_requested_on_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></dd>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.act_traits_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.act_traits_hpp" title="
+ Header <boost/async/act_traits.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">act_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ Includes all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ and <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ traits.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+<span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_movable</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_future_if</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_thread_if</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">asynchronous_completion_token</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_future</span><span class="special">;</span>
+
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations" title="AE
+ operations">AE
+ operations</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork_after</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_any</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp" title="
+ Header <boost/async/fork.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp.metafunction__result_of__fork_ae_f___">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">></span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp.non_member_function__fork___">Non
+ member function <code class="computeroutput"><span class="identifier">fork</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">An</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">An</span><span class="special">)></span> <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">An</span> <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">A1</span><span class="special">,...,</span> <span class="identifier">An</span><span class="special">)>::</span><span class="identifier">type</span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">fork</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">A1</span> <span class="identifier">a1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">An</span> <span class="identifier">an</span> <span class="special">);</span>
+
+
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">An</span> <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">default_asynchronous_executor</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">A1</span><span class="special">,...,</span> <span class="identifier">An</span><span class="special">)>::</span><span class="identifier">type</span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">fork</span><span class="special">(</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">A1</span> <span class="identifier">a1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">An</span> <span class="identifier">an</span> <span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp.metafunction__result_of__fork_ae_f___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp.metafunction__result_of__fork_ae_f___" title="Metafunction
+ result_of::fork<AE,F> ">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">></span> </code></a>
+</h6></div></div></div>
+<p>
+ A metafunction returning the result type of applying <span class="underline">_fork</span>_
+ to an asynchronous executor and a Nullary functor.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">An</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">An</span><span class="special">)></span> <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<div class="table">
+<a name="id4830920"></a><p class="title"><b>Table 2. fork Parameters</b></p>
+<table class="table" summary="fork Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">F</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of n-ary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Ak</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of n-ary function
+ </p>
+ </td>
+<td>
+ <p>
+ n-ary function argument type for argument k
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ result_of::fork<AE,F,A1,...,An>::type
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ AE::handle<typename result_of<F(A1,...,An)> >::type
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp.non_member_function__fork___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_hpp.non_member_function__fork___" title="Non
+ member function fork()">Non
+ member function <code class="computeroutput"><span class="identifier">fork</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">,</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">An</span> <span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">An</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">fork</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">A1</span> <span class="identifier">a1</span> <span class="special">,</span> <span class="special">...,</span> <span class="identifier">An</span> <span class="identifier">an</span> <span class="special">);</span>
+</pre>
+<div class="table">
+<a name="id4831417"></a><p class="title"><b>Table 3. fork Parameters</b></p>
+<table class="table" summary="fork Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">F</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of n-ary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Ak</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of n-ary function
+ </p>
+ </td>
+<td>
+ <p>
+ n-ary function argument type for argument k
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Requires:</span></dt>
+<dd><p>
+ The expression fn(a1, ..., an) must be valid and have a type convertible
+ to R, where R is typename result_of<F(A1, ..., An)>::type..
+ </p></dd>
+<dt><span class="term">Efect:</span></dt>
+<dd><p>
+ Request the <code class="computeroutput"><span class="identifier">AE</span></code>
+ to creates a thread of execution for the function <code class="computeroutput"><span class="identifier">fn</span></code> Request the asynchronous evaluation
+ the expression <code class="computeroutput"><span class="identifier">fn</span><span class="special">(</span><span class="identifier">a1</span><span class="special">,</span> <span class="special">...,</span>
+ <span class="identifier">an</span><span class="special">)</span></code>
+ with respect to the calling thread to the asynchronous executor
+ <code class="computeroutput"><span class="identifier">ae</span></code> and places its
+ result in an object h of type AE::handle<R>::type as if by
+ using h.set_value( fn(a1, ..., an) ). If the expression fn() throws
+ an exception e, places e into h as if by using h.set_exception(
+ current_exception() ).
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ the AE handle h.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp" title="
+ Header <boost/async/fork_after.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork_after</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.partial_specialization_template_class__act_traits_act_wrapper_act___">Partial
+ Specialization Template Class <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.partial_specialization_template_class__is_movable_act_wrapper_act____">Partial
+ Specialization Template Class <code class="computeroutput"><span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.template_class__act_wrapper___">Template
+ Class <code class="computeroutput"><span class="identifier">act_wrapper</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.metafunction__result_of__fork_ae_f___">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">></span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.static_member_function__partial_specialization_workaround__fork_after____apply___">Static
+ Member Function <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">fork_after</span><span class="special"><>::</span><span class="identifier">apply</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.non_member_function__fork_after___">Non
+ member function <code class="computeroutput"><span class="identifier">fork_after</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.non_member_function__after_completion_fork___">Non
+ member function <code class="computeroutput"><span class="identifier">after_completion_fork</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">fork_after</span></code>
+ which request the asynchronous evaluation a function with respect to
+ the calling thread to the asynchronous executor <code class="computeroutput"><span class="identifier">ae</span></code>
+ after the completion of some <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ The result is an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ wrapping the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ associated to the <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>.
+ </p>
+<p>
+ The default implementation forks a helper task which waits the completion
+ of the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ 's only then evaluates the function. A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code> could want to
+ specialize the <code class="computeroutput"><span class="identifier">fork_after</span></code>
+ free function. As for the moment we can not partially specialize a function
+ a trick is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">fork_after</span></code>
+ member function <code class="computeroutput"><span class="identifier">fork_after</span></code>
+ calls to the static operation <code class="computeroutput"><span class="identifier">apply</span></code>
+ on a class with the same name in the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">>;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">act_wrapper</span><span class="special">;</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork_after</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">act_wrapper</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">>::</span><span class="identifier">type</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">D</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork_after</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_after</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span><span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">D</span><span class="special">&</span> <span class="identifier">d</span><span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">D</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_after</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">fork_after</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">D</span><span class="special">&</span> <span class="identifier">d</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">D</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">An</span> <span class="special">></span>
+ <span class="identifier">act_wrapper</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">A1</span><span class="special">,...,</span> <span class="identifier">An</span><span class="special">)>::</span><span class="identifier">type</span> <span class="special">>::</span><span class="identifier">type</span> <span class="special">></span>
+ <span class="identifier">after_completion_fork</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">D</span><span class="special">&</span> <span class="identifier">d</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">A1</span> <span class="identifier">a1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">An</span> <span class="identifier">an</span> <span class="special">);</span>
+
+
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.partial_specialization_template_class__act_traits_act_wrapper_act___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.partial_specialization_template_class__act_traits_act_wrapper_act___" title="Partial
+ Specialization Template Class act_traits<act_wrapper<ACT>>">Partial
+ Specialization Template Class <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>></span></code></a>
+</h6></div></div></div>
+<p>
+ act_wrapper inherits the traits of its wrapped <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>{};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.partial_specialization_template_class__is_movable_act_wrapper_act____"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.partial_specialization_template_class__is_movable_act_wrapper_act____" title="Partial
+ Specialization Template Class is_movable<act_wrapper<ACT> >">Partial
+ Specialization Template Class <code class="computeroutput"><span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">></span></code></a>
+</h6></div></div></div>
+<p>
+ act_wrapper inherits the traits of its wrapped <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>{};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.template_class__act_wrapper___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.template_class__act_wrapper___" title="Template
+ Class act_wrapper<>">Template
+ Class <code class="computeroutput"><span class="identifier">act_wrapper</span><span class="special"><></span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">act_wrapper</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">act_wrapper</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="special">>::</span><span class="identifier">move_dest_type</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+ <span class="identifier">act_wrapper</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="identifier">wait_initialized</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">other</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> <span class="identifier">other</span><span class="special">);</span>
+
+ <span class="keyword">void</span> <span class="identifier">wait</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">wait_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="identifier">move_dest_type</span> <span class="identifier">get</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">is_ready</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">has_value</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">has_exception</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">detach</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">joinable</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="identifier">join</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">join_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">interrupt</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">interruption_requested</span><span class="special">();</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.metafunction__result_of__fork_ae_f___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.metafunction__result_of__fork_ae_f___" title="Metafunction
+ result_of::fork<AE,F> ">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">></span> </code></a>
+</h6></div></div></div>
+<p>
+ A metafunction returning the result type of applying <code class="computeroutput"><span class="identifier">fork_after</span></code> to an asynchronous executor
+ and a Nullary functor.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork_after</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">act_wrapper</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">>::</span><span class="identifier">type</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<div class="table">
+<a name="id4834572"></a><p class="title"><b>Table 4. fork Parameters</b></p>
+<table class="table" summary="fork Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">F</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of n-ary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ result_of::fork_after<AE,F>::type
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ act_wrapper<typename asynchronous_completion_token<AE, typename
+ boost::result_of<F()>::type>::type>
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.static_member_function__partial_specialization_workaround__fork_after____apply___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.static_member_function__partial_specialization_workaround__fork_after____apply___" title="Static
+ Member Function partial_specialization_workaround::fork_after<>::apply()">Static
+ Member Function <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">fork_after</span><span class="special"><>::</span><span class="identifier">apply</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">D</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork_after</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_after</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span><span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">D</span><span class="special">&</span> <span class="identifier">d</span><span class="special">);</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.non_member_function__fork_after___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.non_member_function__fork_after___" title="Non
+ member function fork_after()">Non
+ member function <code class="computeroutput"><span class="identifier">fork_after</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">D</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_after</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F</span><span class="special">,</span><span class="identifier">D</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">fork_after</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">D</span><span class="special">&</span> <span class="identifier">d</span><span class="special">);</span>
+</pre>
+<div class="table">
+<a name="id4835249"></a><p class="title"><b>Table 5. fork Parameters</b></p>
+<table class="table" summary="fork Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">F</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of n-ary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">D</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of a fusion <code class="computeroutput"><span class="identifier">Sequence</span></code>
+ of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Dependent <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Requires:</span></dt>
+<dd><p>
+ The expression fn() must be valid and have a type convertible to
+ R, where R is typename result_of<F()>::type..
+ </p></dd>
+<dt><span class="term">Efect:</span></dt>
+<dd><p>
+ Request the asynchronous evaluation the expression <code class="computeroutput"><span class="identifier">fn</span><span class="special">()</span></code>
+ with respect to the calling thread to the asynchronous executor
+ <code class="computeroutput"><span class="identifier">ae</span></code> after the completion
+ of all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in <code class="computeroutput"><span class="identifier">d</span></code> and places
+ its result in an object h of type AE::handle<R>::type as
+ if by using h.set_value( fn() ). If the expression fn() throws
+ an exception e, places e into h as if by using h.set_exception(
+ current_exception() ).
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ the AE handle h.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.non_member_function__after_completion_fork___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_after_hpp.non_member_function__after_completion_fork___" title="Non
+ member function after_completion_fork()">Non
+ member function <code class="computeroutput"><span class="identifier">after_completion_fork</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">D</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">An</span> <span class="special">></span>
+<span class="identifier">act_wrapper</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">A1</span><span class="special">,...,</span> <span class="identifier">An</span><span class="special">)>::</span><span class="identifier">type</span> <span class="special">>::</span><span class="identifier">type</span> <span class="special">></span>
+<span class="identifier">after_completion_fork</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">D</span><span class="special">&</span> <span class="identifier">d</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">A1</span> <span class="identifier">a1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">An</span> <span class="identifier">an</span> <span class="special">);</span>
+</pre>
+<div class="table">
+<a name="id4835911"></a><p class="title"><b>Table 6. fork Parameters</b></p>
+<table class="table" summary="fork Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">D</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of a fusion <code class="computeroutput"><span class="identifier">Sequence</span></code>
+ of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Dependent <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">F</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of n-ary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Ak</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of n-ary function
+ </p>
+ </td>
+<td>
+ <p>
+ n-ary function argument type for argument k
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Requires:</span></dt>
+<dd><p>
+ The expression fn(a1, ..., an) must be valid and have a type convertible
+ to R, where R is typename result_of<Fn()>::type..
+ </p></dd>
+<dt><span class="term">Efect:</span></dt>
+<dd><p>
+ Request the <code class="computeroutput"><span class="identifier">AE</span></code>
+ to creates a thread of execution for the function <code class="computeroutput"><span class="identifier">fn</span></code> Request the asynchronous evaluation
+ the expression <code class="computeroutput"><span class="identifier">fn</span><span class="special">(</span><span class="identifier">a1</span><span class="special">,</span> <span class="special">...,</span>
+ <span class="identifier">an</span><span class="special">)</span></code>
+ with respect to the calling thread to the asynchronous executor
+ <code class="computeroutput"><span class="identifier">ae</span></code> after the completion
+ of all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in <code class="computeroutput"><span class="identifier">d</span></code> and places
+ its result in an object h of type AE::handle<R>::type as
+ if by using h.set_value( fn(a1, ..., an) ). If the expression fn()
+ throws an exception e, places e into h as if by using h.set_exception(
+ current_exception() ).
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ the AE handle h.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp" title="
+ Header <boost/async/fork_all.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp.metafunction__result_of__fork_all_ae_f1_______fn___">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp.non_member_function__fork_all___">Non
+ member function <code class="computeroutput"><span class="identifier">fork_all</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork_all</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork_all</span> <span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> <span class="special">>{</span>
+ <span class="keyword">typedef</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">>::</span><span class="identifier">type</span><span class="special">,</span>
+ <span class="special">...</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">fork_all</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">f1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span> <span class="identifier">fn</span> <span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">default_asynchronous_executor</span><span class="special">,</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">fork_all</span><span class="special">(</span> <span class="identifier">F1</span> <span class="identifier">f1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span> <span class="identifier">fn</span> <span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp.metafunction__result_of__fork_all_ae_f1_______fn___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp.metafunction__result_of__fork_all_ae_f1_______fn___" title="Metafunction
+ result_of::fork_all<AE,F1, ..., Fn> ">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> </code></a>
+</h6></div></div></div>
+<p>
+ A metafunction returning the result type of applying fork_all to an
+ asynchronous executor and n Nullary functors.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork_all</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork_all</span> <span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> <span class="special">>{</span>
+ <span class="keyword">typedef</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">>::</span><span class="identifier">type</span><span class="special">,</span>
+ <span class="special">...</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<div class="table">
+<a name="id4837625"></a><p class="title"><b>Table 7. fork_all Parameters</b></p>
+<table class="table" summary="fork_all Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchrousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Fk</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of nullary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,...,</span><span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ a fusion tuple of the result of forking each <code class="computeroutput"><span class="identifier">Fk</span></code>
+ by the <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp.non_member_function__fork_all___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.fork_all_hpp.non_member_function__fork_all___" title="Non
+ member function fork_all()">Non
+ member function <code class="computeroutput"><span class="identifier">fork_all</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">fork_all</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">f1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span> <span class="identifier">fn</span> <span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special"><</span><span class="identifier">default_asynchronous_executor</span><span class="special">,</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">fork_all</span><span class="special">(</span> <span class="identifier">F1</span> <span class="identifier">f1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span> <span class="identifier">fn</span> <span class="special">);</span>
+</pre>
+<div class="table">
+<a name="id4838288"></a><p class="title"><b>Table 8. fork Parameters</b></p>
+<table class="table" summary="fork Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchrousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Fk</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of nullary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ a fusion tuple of the result of forking each <code class="computeroutput"><span class="identifier">fk</span></code>
+ by the <code class="computeroutput"><span class="identifier">ae</span></code>
+ </p></dd>
+<dt><span class="term">Efect:</span></dt>
+<dd><p>
+ Request the <code class="computeroutput"><span class="identifier">AE</span></code>
+ to creates a n thread of execution one for the function <code class="computeroutput"><span class="identifier">fk</span></code>.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp" title="
+ Header <boost/async/wait_for_all.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp.metafunction__result_of__wait_for_all_ae_f1_______fn___">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp.non_member_function__wait_for_all_">Non
+ member function <code class="computeroutput"><span class="identifier">wait_for_all</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+<span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_for_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F1</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">,</span>
+ <span class="special">...</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">Fn</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">,</span>
+ <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">wait_for_all</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">f1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span> <span class="identifier">fn</span> <span class="special">);</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp.metafunction__result_of__wait_for_all_ae_f1_______fn___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp.metafunction__result_of__wait_for_all_ae_f1_______fn___" title="Metafunction
+ result_of::wait_for_all<AE,F1, ..., Fn> ">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> </code></a>
+</h6></div></div></div>
+<p>
+ A metafunction returning the result type of applying get_all to a Sequence
+ of asynchronous executor handles.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_for_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F1</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">,</span>
+ <span class="special">...</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">Fn</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">,</span>
+ <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<div class="table">
+<a name="id4839349"></a><p class="title"><b>Table 9. wait_for_all Parameters</b></p>
+<table class="table" summary="wait_for_all Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchrousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Fk</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of nullary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span>
+ <span class="identifier">F1</span><span class="special">,</span>
+ <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ a fusion tuple of the result of applying get to each one of the
+ asynchronous executors handles resulting of forking each function
+ <code class="computeroutput"><span class="identifier">Fk</span></code> by <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp.non_member_function__wait_for_all_"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_all_hpp.non_member_function__wait_for_all_" title="Non
+ member function wait_for_all">Non
+ member function <code class="computeroutput"><span class="identifier">wait_for_all</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">wait_for_all</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">f1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span> <span class="identifier">fn</span> <span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ a fusion tuple of the result of applying get to each one of the
+ asynchronous executors handles resulting of forking each function
+ <code class="computeroutput"><span class="identifier">fk</span></code> by <code class="computeroutput"><span class="identifier">ae</span></code>.
+ </p></dd>
+<dt><span class="term">Effect:</span></dt>
+<dd><p>
+ Request the <code class="computeroutput"><span class="identifier">AE</span></code>
+ to creates a n thread of execution one for the function <code class="computeroutput"><span class="identifier">fk</span></code> and blocks until all the AE
+ handles are ready.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp" title="
+ Header <boost/async/wait_for_any.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_any</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp.metafunction__result_of__wait_for_all_ae_f1_______fn___">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp.non_member_function__wait_for_any_">Non
+ member function <code class="computeroutput"><span class="identifier">wait_for_any</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_for_any</span> <span class="special">{</span>
+ <span class="comment">// requires typename result_of<F1()>::type == typename result_of<Fk()>::type
+</span> <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F1</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_any</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">wait_for_any</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">f1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span> <span class="identifier">fn</span> <span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp.metafunction__result_of__wait_for_all_ae_f1_______fn___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp.metafunction__result_of__wait_for_all_ae_f1_______fn___" title="Metafunction
+ result_of::wait_for_all<AE,F1, ..., Fn> ">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> </code></a>
+</h6></div></div></div>
+<p>
+ A metafunction returning the a pair: the index of the first function
+ executed by the AE and the result type of applying get on an asynchronous
+ executor handles.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_for_any</span> <span class="special">{</span>
+ <span class="comment">// requires typename result_of<F1()>::type == typename result_of<Fk()>::type
+</span> <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F1</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<div class="table">
+<a name="id4840705"></a><p class="title"><b>Table 10. wait_for_all Parameters</b></p>
+<table class="table" summary="wait_for_all Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of <code class="computeroutput"><span class="identifier">AsynchrousExecutor</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Fk</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A model of nullary function
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_any</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span>
+ <span class="identifier">F1</span><span class="special">,</span>
+ <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ a pair: the index of the first function executed by the AE and
+ the result type of applying get on an asynchronous executor handles
+ created by <code class="computeroutput"><span class="identifier">ae</span></code> to
+ fork each <code class="computeroutput"><span class="identifier">fk</span></code>
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp.non_member_function__wait_for_any_"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.ae_operations.wait_for_any_hpp.non_member_function__wait_for_any_" title="Non
+ member function wait_for_any">Non
+ member function <code class="computeroutput"><span class="identifier">wait_for_any</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_for_any</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">wait_for_any</span><span class="special">(</span> <span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">f1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span> <span class="identifier">fn</span> <span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ a fusion tuple of the result of applying get to each one of the
+ asynchronous executors handles resulting of forking each function
+ <code class="computeroutput"><span class="identifier">fk</span></code> by <code class="computeroutput"><span class="identifier">ae</span></code>.
+ </p></dd>
+<dt><span class="term">Effect:</span></dt>
+<dd><p>
+ Request the <code class="computeroutput"><span class="identifier">AE</span></code>
+ to creates a n thread of execution one for the function <code class="computeroutput"><span class="identifier">fk</span></code> and blocks until all the AE
+ handles are ready.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.algorithm_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.algorithm_hpp" title="
+ Header <boost/async/algorithm.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ Include all the <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>/<code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code> framework
+ functions.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">//#include <boost/async/lazy_fork.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork_after</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_any</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">//#include <boost/async/algorithm/join_all_for.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">joinable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">detach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interrupt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interruption_requested</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_all_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">//#include <boost/async/algorithm/join_all_for.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">are_all_joinable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">detach_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interrupt_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interruption_requested_on_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">//#include <boost/async/algorithm/wait_all_for.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">is_ready</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">has_value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">has_exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_all_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">//#include <boost/async/algorithm/wait_all_for.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="comment">//#include <boost/async/algorithm/get_all_until.hpp>
+</span><span class="comment">//#include <boost/async/algorithm/get_all_for.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">are_all_ready</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">have_all_value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">have_all_exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations" title="Future
+ based ACT operations">Future
+ based ACT operations</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_until_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.is_ready_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">is_ready</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.has_value_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">has_value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.has_exception_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">has_exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_all_until_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_all_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.are_all_ready_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">are_all_ready</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.have_all_value_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">have_all_value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.have_all_exception_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">have_some_exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_hpp" title="
+ Header <boost/async/algorithm/wait.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">wait</span></code>
+ which waits the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter. The default implementation applies the <code class="computeroutput"><span class="identifier">wait</span></code> member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>. A user
+ adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">wait</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a wait function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">wait</span></code>
+ member function, <code class="computeroutput"><span class="identifier">wait</span></code>
+ calls to the static operation apply on a class with the same name in
+ the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+<span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">wait</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">wait</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">wait</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">apply</span><span class="special">(</span><span class="identifier">act</span><span class="special">);</span>
+ <span class="special">}</span>
+
+<span class="special">}</span>
+<span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_until_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_until_hpp" title="
+ Header <boost/async/algorithm/wait_until.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ which wait until the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter is ready or the given time is reached. The default
+ implementation applies the <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a wait_until function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ member function, <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ calls to the static operation apply on a class with the same name in
+ the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">wait_for</span></code>
+ which wait until the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter is ready or the given time is elapsed. The default
+ implementation applies the <code class="computeroutput"><span class="identifier">wait_for</span></code>
+ member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">wait_for</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a <code class="computeroutput"><span class="identifier">wait_for</span></code>
+ function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ member function, <code class="computeroutput"><span class="identifier">wait_for</span></code>
+ calls to the static operation apply on a class with the same name in
+ the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_until</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_for</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_until</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_for</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">abs_time</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">wait_until</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+<span class="special">}</span>
+<span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp" title="
+ Header <boost/async/algorithm/get.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.metafunction__result_of__get_act___">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.static_member_function__partial_specialization_workaround__get____apply___">Static
+ Member Function <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">get</span><span class="special"><>::</span><span class="identifier">apply</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.non_member_function__get___">Non
+ member function <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">get</span></code>
+ which obtain the stored value on the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter. The default implementation applies the <code class="computeroutput"><span class="identifier">get</span></code> member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>. A user
+ adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">get</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a get function with the same prototype. As for the moment
+ we can not partially specialize a function a trick is used: instead of
+ calling directly to the <code class="computeroutput"><span class="identifier">get</span></code>
+ member function <code class="computeroutput"><span class="identifier">get</span></code> calls
+ to the static operation <code class="computeroutput"><span class="identifier">apply</span></code>
+ on a class with the same name in the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">get</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">move_dest_type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">get</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">get</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.metafunction__result_of__get_act___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.metafunction__result_of__get_act___" title="Metafunction
+ result_of::get<ACT> ">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">></span> </code></a>
+</h6></div></div></div>
+<p>
+ A metafunction returning the result type of applying get to an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">get</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">move_dest_type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<div class="table">
+<a name="id4846060"></a><p class="title"><b>Table 11. get Parameters</b></p>
+<table class="table" summary="get Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ACT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr></tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">S</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ Depending on the nature of the ACT returns a <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">move_dest_type</span></code>.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.static_member_function__partial_specialization_workaround__get____apply___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.static_member_function__partial_specialization_workaround__get____apply___" title="Static
+ Member Function partial_specialization_workaround::get<>::apply()">Static
+ Member Function <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">get</span><span class="special"><>::</span><span class="identifier">apply</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<p>
+ The default implementation applies the 'get()' member function on the
+ <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">get</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.non_member_function__get___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_hpp.non_member_function__get___" title="Non
+ member function get()">Non
+ member function <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">get</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">get</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ a fusion tuple of the result of applying <code class="computeroutput"><span class="identifier">get</span></code>
+ to each one of the asynchronous completion token handles in the
+ sequence.
+ </p></dd>
+<dt><span class="term">Effect:</span></dt>
+<dd><p>
+ Blocks until all the ACT handles in the Sequence are ready.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ if some of the ACT::get operation throws
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.is_ready_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.is_ready_hpp" title="
+ Header <boost/async/algorithm/is_ready.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">is_ready</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">is_ready</span></code>
+ which states if <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter is ready. The default implementation applies the
+ <code class="computeroutput"><span class="identifier">is_ready</span></code> member function
+ to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">is_ready</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a is_ready function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">is_ready</span></code>
+ member function <code class="computeroutput"><span class="identifier">is_ready</span></code>
+ calls to the static operation <code class="computeroutput"><span class="identifier">apply</span></code>
+ on a class with the same name in the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_ready</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_ready</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">is_ready</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">is_ready</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">is_ready</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
+
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.has_value_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.has_value_hpp" title="
+ Header <boost/async/algorithm/has_value.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">has_value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">has_value</span></code>
+ which states if <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter has a value. The default implementation applies the
+ <code class="computeroutput"><span class="identifier">has_value</span></code> member function
+ to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">has_value</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a has_value function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">has_value</span></code>
+ member function <code class="computeroutput"><span class="identifier">has_value</span></code>
+ calls to the static operation <code class="computeroutput"><span class="identifier">apply</span></code>
+ on a class with the same name in the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_value</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_value</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_value</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">is_ready</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">has_value</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
+
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.has_exception_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.has_exception_hpp" title="
+ Header <boost/async/algorithm/has_exception.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">has_exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">has_exception</span></code>
+ which states if <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter has an exception. The default implementation applies
+ the <code class="computeroutput"><span class="identifier">has_exception</span></code> member
+ function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">has_exception</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a has_exception function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">has_exception</span></code>
+ member function <code class="computeroutput"><span class="identifier">has_exception</span></code>
+ calls to the static operation <code class="computeroutput"><span class="identifier">apply</span></code>
+ on a class with the same name in the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+<span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">has_exception</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">have_all_exception</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">has_exception</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">have_all_exception</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_all_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_all_hpp" title="
+ Header <boost/async/algorithm/wait_all.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">wait_all</span></code>
+ which waits the completion of all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in the sequence passed as parameter.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+<span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">wait</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">for_each</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">wait</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">wait_all</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+
+<span class="special">}</span>
+<span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_all_until_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.wait_all_until_hpp" title="
+ Header <boost/async/algorithm/wait_all_until.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">wait_all_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines two free function <code class="computeroutput"><span class="identifier">wait_all_until</span></code>
+ and <code class="computeroutput"><span class="identifier">wait_all_for</span></code> which
+ waits the completion of all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in the sequence passed as parameter or a given time is reached or elapsed
+ respectively.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+<span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">wait_until</span> <span class="special">{</span>
+ <span class="identifier">wait_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">struct</span> <span class="identifier">wait_for</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="identifier">wait_for</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Duration</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_all_until</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_all_for</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_all_until</span><span class="special"><</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">></span>
+ <span class="identifier">wait_all_until</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">t</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_all_for</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">></span>
+ <span class="identifier">wait_all_for</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Duration</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp" title="
+ Header <boost/async/algorithm/get_all.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">get_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.functor__fct__get___">Functor
+ <code class="computeroutput"><span class="identifier">fct</span><span class="special">::</span><span class="identifier">get</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.metafunction__result_of__get_all_ae_f1_______fn___">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.non_member_function__get_all_">Non
+ member function <code class="computeroutput"><span class="identifier">get_all</span></code></a></span></dt>
+</dl></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">get_all</span></code>
+ which waits the completion of all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in the sequence passed as parameter, and returns a tuple with the value
+ stores in each one of the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">get</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">transform</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">get</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get_all</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">mt</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.functor__fct__get___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.functor__fct__get___" title="Functor
+ fct::get<>">Functor
+ <code class="computeroutput"><span class="identifier">fct</span><span class="special">::</span><span class="identifier">get</span><span class="special"><></span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">get</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">::</span><span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">AE</span><span class="special">&</span> <span class="identifier">ae</span><span class="special">);</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ The result of the AE::get().
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ if AE::get() throws.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.metafunction__result_of__get_all_ae_f1_______fn___"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.metafunction__result_of__get_all_ae_f1_______fn___" title="Metafunction
+ result_of::get_all<AE,F1, ..., Fn> ">Metafunction
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_all</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span><span class="identifier">F1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">></span> </code></a>
+</h6></div></div></div>
+<p>
+ A metafunction returning the result type of applying get_all to a Sequence
+ of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">transform</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">get</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<div class="table">
+<a name="id4851111"></a><p class="title"><b>Table 12. fork_all Parameters</b></p>
+<table class="table" summary="fork_all Parameters">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ <span class="bold"><strong>Parameter</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Requirement</strong></span>
+ </p>
+ </th>
+<th>
+ <p>
+ <span class="bold"><strong>Description</strong></span>
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Sequence</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A sequence of of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>s
+ </p>
+ </td>
+<td>
+ <p>
+ Operation's argument
+ </p>
+ </td>
+</tr></tbody>
+</table>
+</div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_all</span><span class="special"><</span><span class="identifier">S</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ a fusion tuple of the result of applying get to each one of the
+ asynchronous executors in the sequence
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.non_member_function__get_all_"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.get_all_hpp.non_member_function__get_all_" title="Non
+ member function get_all">Non
+ member function <code class="computeroutput"><span class="identifier">get_all</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">algo</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get_all</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">mt</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ a fusion tuple of the result of applying <code class="computeroutput"><span class="identifier">get</span></code>
+ to each one of the asynchronous completion token handles in the
+ sequence.
+ </p></dd>
+<dt><span class="term">Effect:</span></dt>
+<dd><p>
+ Blocks until all the ACT handles in the Sequence are ready.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ if some of the ACT::get operation throws
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.are_all_ready_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.are_all_ready_hpp" title="
+ Header <boost/async/algorithm/are_all_ready.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">are_all_ready</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">are_all_ready</span></code>
+ which states if all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in a sequence of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ are ready. The current implementation applies the <code class="computeroutput"><span class="identifier">is_ready</span></code>
+ free function for each <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">is_ready</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">are_all_ready</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">is_ready</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">are_all_ready</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.have_all_value_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.have_all_value_hpp" title="
+ Header <boost/async/algorithm/have_all_value.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">have_all_value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">have_all_value</span></code>
+ which states if all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in a sequence of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ have a value. The current implementation applies the <code class="computeroutput"><span class="identifier">has_value</span></code>
+ free function for each <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">has_value</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">have_all_value</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">has_value</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">have_all_value</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.have_all_exception_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.future_based_act_operations.have_all_exception_hpp" title="
+ Header <boost/async/algorithm/have_some_exception.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">have_some_exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function __have_some<span class="underline">exception</span>_
+ which states if some of the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in a sequence of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ have a exception stored. The current implementation applies the <code class="computeroutput"><span class="identifier">has_exception</span></code> free function for each
+ <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">has_exception</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">have_some_exception</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">has_exception</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">have_some_exception</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations" title="Thread
+ based ACT operations">Thread
+ based ACT operations</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.detach_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">detach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.joinable_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">joinable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_until_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interrupt_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interrupt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interruption_requested_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interruption_requested</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.detach_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">detach_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.are_all_joinable_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">are_all_joinable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_all_until_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_all_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interrupt_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interrupt_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interruption_requested_on_all_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interruption_requested_on_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.detach_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.detach_hpp" title="
+ Header <boost/async/algorithm/detach.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">detach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code> which <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code> the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter. The default implementation applies the <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code>
+ member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code> free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code> do not
+ provides a detach function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code> member function detach calls to the
+ static operation apply on a class with the same name in the namespace
+ <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">detach</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">detach</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">detach</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span><span class="keyword">void</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">detach</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.joinable_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.joinable_hpp" title="
+ Header <boost/async/algorithm/joinable.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">joinable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">joinable</span></code>
+ which states if <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter is <code class="computeroutput"><span class="identifier">joinable</span></code>.
+ The default implementation applies the <code class="computeroutput"><span class="identifier">joinable</span></code>
+ member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">joinable</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a joinable function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">joinable</span></code>
+ member function <code class="computeroutput"><span class="identifier">joinable</span></code>
+ calls to the static operation <code class="computeroutput"><span class="identifier">apply</span></code>
+ on a class with the same name in the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">joinable</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">joinable</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">joinable</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">joinable</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">joinable</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_hpp" title="
+ Header <boost/async/algorithm/join.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code> which joins the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter. The default implementation applies the <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code> free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code> do not
+ provides a join function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code> member function join calls to the static
+ operation apply on a class with the same name in the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">join</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">join</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">join</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">join</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">apply</span><span class="special">(</span><span class="identifier">act</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_until_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_until_hpp" title="
+ Header <boost/async/algorithm/join_until.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">join_until</span></code>
+ which join until the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter is ready or the given time is reached. The default
+ implementation applies the <code class="computeroutput"><span class="identifier">join_until</span></code>
+ member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">join_until</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a join_until function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">join_until</span></code>
+ member function, <code class="computeroutput"><span class="identifier">join_until</span></code>
+ calls to the static operation apply on a class with the same name in
+ the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">join_for</span></code>
+ which join until the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter is ready or the given time is elapsed. The default
+ implementation applies the <code class="computeroutput"><span class="identifier">join_for</span></code>
+ member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">join_for</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a <code class="computeroutput"><span class="identifier">join_for</span></code>
+ function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">join_until</span></code>
+ member function, <code class="computeroutput"><span class="identifier">join_for</span></code>
+ calls to the static operation apply on a class with the same name in
+ the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_until</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_for</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">ACT</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">join_until</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">join_for</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">abs_time</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">join_until</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">join_until</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">apply</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Duration</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">join_for</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">apply</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span> <span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interrupt_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interrupt_hpp" title="
+ Header <boost/async/algorithm/interrupt.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interrupt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code> which interrupts the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code> passed
+ as parameter. The default implementation applies the <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code> member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>. A user
+ adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code> free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code> do not
+ provides a interrupt function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code> member function interrupt calls to
+ the static operation apply on a class with the same name in the namespace
+ <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">interrupt</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">interrupt</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">interrupt</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">void</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="identifier">interrupt</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interruption_requested_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interruption_requested_hpp" title="
+ Header <boost/async/algorithm/interruption_requested.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interruption_requested</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">interruption_requested</span></code>
+ which states if <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ passed as parameter has received un <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code> request. The default implementation
+ applies the <code class="computeroutput"><span class="identifier">interruption_requested</span></code>
+ member function to the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ A user adapting another <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ could need to specialize the <code class="computeroutput"><span class="identifier">interruption_requested</span></code>
+ free function if the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ do not provides a interruption_requested function with the same prototype.
+ </p>
+<p>
+ As for the moment we can not partially specialize a function a trick
+ is used: instead of calling directly to the <code class="computeroutput"><span class="identifier">interruption_requested</span></code>
+ member function <code class="computeroutput"><span class="identifier">interruption_requested</span></code>
+ calls to the static operation <code class="computeroutput"><span class="identifier">apply</span></code>
+ on a class with the same name in the namespace <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span></code>.
+ So the user can specialize partially this class.
+ </p>
+<p>
+ The template parameter ACT must be a model of <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">interruption_requested</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">interruption_requested</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">interruption_requested</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span><span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>,</span>
+ <span class="keyword">bool</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">bool</span> <span class="identifier">interruption_requested</span><span class="special">(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.detach_all_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.detach_all_hpp" title="
+ Header <boost/async/algorithm/detach_all.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">detach_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">detach_all</span></code>
+ which detach all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in the sequence passed as parameter.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">detach</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">detach_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">for_each</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">detach</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">detach_all</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_all_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_all_hpp" title="
+ Header <boost/async/algorithm/join_all.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">join_all</span></code>
+ which waits the completion of all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in the sequence passed as parameter.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">join</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">join_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">for_each</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">join</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">join_all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">join_all</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.are_all_joinable_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.are_all_joinable_hpp" title="
+ Header <boost/async/algorithm/are_all_joinable.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">are_all_joinable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">are_all_joinable</span></code>
+ which states if all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in a sequence of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ are <code class="computeroutput"><span class="identifier">joinable</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">joinable</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">are_all_joinable</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">joinable</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="identifier">are_all_joinable</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_all_until_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.join_all_until_hpp" title="
+ Header <boost/async/algorithm/join_all_until.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">join_all_until</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">join_all_until</span></code>
+ and __join_all<span class="underline">for</span>_ which waits
+ the completion of all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in the sequence passed as parameter or a given time is reached or elapsed
+ respectiviely.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">join_until</span> <span class="special">{</span>
+ <span class="identifier">join_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">join_for</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="identifier">join_for</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Duration</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">join_all_until</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">join_all_for</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">join_all_until</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">></span>
+ <span class="identifier">join_all_until</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">join_all_for</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">></span>
+ <span class="identifier">join_all_for</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Duration</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interrupt_all_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interrupt_all_hpp" title="
+ Header <boost/async/algorithm/interrupt_all.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interrupt_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">interrupt_all</span></code>
+ which interrupts all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ in the sequence passed as parameter.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">interrupt</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">interrupt_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">for_each</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">interrupt</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">interrupt_all</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interruption_requested_on_all_hpp"></a><a href="ae_act_framework_reference.html#toward_boost_async.reference.ae_act_framework_reference.thread_based_act_operations.interruption_requested_on_all_hpp" title="
+ Header <boost/async/algorithm/interruption_requested_on_all.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">interruption_requested_on_all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h5></div></div></div>
+<p>
+ Defines a free function <code class="computeroutput"><span class="identifier">interruption_requested_on_all</span></code>
+ which states if an interruption has been requested on all the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code> in a sequence
+ of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">fct</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">interruption_requested</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ACT</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ACT</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">interruption_requested_on_all</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">all</span><span class="special"><</span><span class="identifier">Sequence</span><span class="special">,</span> <span class="identifier">fct</span><span class="special">::</span><span class="identifier">interruption_requested</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="identifier">interruption_requested_on_all</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="concepts.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="ae_act_models_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/reference/ae_act_models_reference.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/reference/ae_act_models_reference.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,2553 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>AE/ACT
+ Models Reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="ae_act_framework_reference.html" title="AE/ACT
+ Framework Reference">
+<link rel="next" href="../examples.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ae_act_framework_reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../examples.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference"></a><a href="ae_act_models_reference.html" title="AE/ACT
+ Models Reference">AE/ACT
+ Models Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.future_traits_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">future_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">immediate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__">Class
+ <code class="computeroutput"><span class="identifier">unique_immediate</span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__">Class
+ <code class="computeroutput"><span class="identifier">shared_immediate</span> </code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.basic_threader_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">launcher</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__">Class
+ <code class="computeroutput"><span class="identifier">launcher</span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__">Class
+ <code class="computeroutput"><span class="identifier">shared_launcher</span> </code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___">Template
+ Class <code class="computeroutput"><span class="identifier">unique_joiner</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.non_member_swap">
+ Non-member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_">Template
+ Class <code class="computeroutput"><span class="identifier">unique_threader</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___">Template
+ Class <code class="computeroutput"><span class="identifier">shared_joiner</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.non_member_swap2">
+ Non-member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_">Template
+ Class <code class="computeroutput"><span class="identifier">shared_threader</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.scheduler_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">scheduler</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_futures_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">future</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_launcher_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">launcher</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_threader_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_basic_threaderr_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_scheduler_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">scheduler</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.asynchronous_executor_decorator_hpp">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">asynchronous_executor_decorator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.future_traits_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.future_traits_hpp" title="
+ Header <boost/async/future_traits.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">future_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span>
+ <span class="special">{</span>
+<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_HAS_RVALUE_REFS</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_fundamental</span><span class="special"><</span><span class="identifier">T</span><span class="special">>,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">T</span><span class="special">&&>::</span><span class="identifier">type</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+<span class="preprocessor">#else</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">T</span><span class="special">&,</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">>,</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&l
t;</span><span class="identifier">T</span><span class="special">>,</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+<span class="preprocessor">#endif</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">&></span> <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special"><></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">void</span><span class="special">></span> <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span>
+ <span class="special">{</span>
+<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_HAS_RVALUE_REFS</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_fundamental</span><span class="special"><</span><span class="identifier">T</span><span class="special">>,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">T</span><span class="special">&&>::</span><span class="identifier">type</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+<span class="preprocessor">#else</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">T</span><span class="special">&,</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">>,</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&l
t;</span><span class="identifier">T</span><span class="special">>,</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+<span class="preprocessor">#endif</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">&></span> <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special"><></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="keyword">void</span><span class="special">></span> <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">&></span> <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">{};</span>
+
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">{};</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">wait</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">wait</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.immediate_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp" title="
+ Header <boost/async/immediate.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">immediate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__">Class
+ <code class="computeroutput"><span class="identifier">unique_immediate</span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__">Class
+ <code class="computeroutput"><span class="identifier">shared_immediate</span> </code></a></span></dt>
+</dl></div>
+<p>
+ An immediate executor is an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ executing the function on the current thread with a future as <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code> so we can get the value
+ associated to it.
+ </p>
+<p>
+ The library defines two kind of immediate executors: unique_immediate and
+ shared_immediate that respectively have a unique_future and a shared_future
+ as <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">immediate</span><span class="special">;</span>
+ <span class="keyword">class</span> <span class="identifier">shared_immediate</span><span class="special">;</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">wait</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">wait</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__" title="Class
+ unique_immediate ">Class
+ <code class="computeroutput"><span class="identifier">unique_immediate</span> </code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__.metafunction__unique_immediate__handle___">Metafunction
+ <code class="computeroutput"><span class="identifier">unique_immediate</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__.member_function__unique_immediate____fork_">Member
+ function <code class="computeroutput"><span class="identifier">unique_immediate</span><span class="special"><>::</span><span class="identifier">fork</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">unique_immediate</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__.metafunction__unique_immediate__handle___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__.metafunction__unique_immediate__handle___" title="Metafunction
+ unique_immediate::handle<>">Metafunction
+ <code class="computeroutput"><span class="identifier">unique_immediate</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a>
+</h6></div></div></div>
+<p>
+ Metafunction that returns the result type of the fork function applied
+ to a unique_immediate and the value type.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ L::handle<T>::type
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ A unique_future<T>.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__.member_function__unique_immediate____fork_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__unique_immediate__.member_function__unique_immediate____fork_" title="Member
+ function unique_immediate<>::fork">Member
+ function <code class="computeroutput"><span class="identifier">unique_immediate</span><span class="special"><>::</span><span class="identifier">fork</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+<span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A unique_future to the result of calling a function F.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ create a thread executing the function f. The result of the function
+ will be stored on the resulting future.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__" title="Class
+ shared_immediate ">Class
+ <code class="computeroutput"><span class="identifier">shared_immediate</span> </code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__.metafunction__shared_immediate__handle___">Metafunction
+ <code class="computeroutput"><span class="identifier">shared_immediate</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__.member_function__shared_immediate__fork_">Member
+ function <code class="computeroutput"><span class="identifier">shared_immediate</span><span class="special">::</span><span class="identifier">fork</span></code></a></span></dt>
+</dl></div>
+<p>
+ Thread shared_immediate using a common configuration managed with the
+ thread attributes and returning on the fork operation a unique_future
+ to the resulting type of the call to the threaded function.
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">shared_immediate</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">();</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__.metafunction__shared_immediate__handle___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__.metafunction__shared_immediate__handle___" title="Metafunction
+ shared_immediate::handle<>">Metafunction
+ <code class="computeroutput"><span class="identifier">shared_immediate</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a>
+</h6></div></div></div>
+<p>
+ Metafunction that returns the result type of the fork function applied
+ to a shared_immediate and the value type.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ L::handle<T>::type
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ A unique_future<T>.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__.member_function__shared_immediate__fork_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.immediate_hpp.class__shared_immediate__.member_function__shared_immediate__fork_" title="Member
+ function shared_immediate::fork">Member
+ function <code class="computeroutput"><span class="identifier">shared_immediate</span><span class="special">::</span><span class="identifier">fork</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+<span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A unique_future to the result of calling a function F.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ create a thread executing the function f. The result of the function
+ will be stored on the resulting future.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.basic_threader_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.basic_threader_hpp" title="
+ Header <boost/async/basic_threader.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">basic_threader</span></code> is an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code> with a thread as
+ <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">basic_threader</span> <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">();</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">thread</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span> <span class="identifier">thread</span> <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special"><></span>
+ <span class="keyword">struct</span> <span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">thread</span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">move_dest_type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><></span>
+ <span class="keyword">struct</span> <span class="identifier">wait</span><span class="special"><</span><span class="identifier">thread</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait</span><span class="special"><</span><span class="identifier">thread</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">thread</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">join</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">thread</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">thread</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">thread</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_join</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">thread</span><span class="special">,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">thread</span><span class="special">,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">thread</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_join</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><></span>
+ <span class="keyword">struct</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">thread</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">join_until</span><span class="special"><</span><span class="identifier">thread</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">thread</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_join</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">thread</span><span class="special">,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">thread</span><span class="special">,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">thread</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_join</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp" title="
+ Header <boost/async/launcher.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">launcher</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__">Class
+ <code class="computeroutput"><span class="identifier">launcher</span> </code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__">Class
+ <code class="computeroutput"><span class="identifier">shared_launcher</span> </code></a></span></dt>
+</dl></div>
+<p>
+ A launcher is an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ with a future as <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>
+ so we can get the value associated to it.
+ </p>
+<p>
+ The library defines two kind of launchers: unique_launcher and shared_launcher
+ that respectively have a unique_future and a shared_future as <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">launcher</span><span class="special">;</span>
+ <span class="keyword">class</span> <span class="identifier">shared_launcher</span><span class="special">;</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">wait</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">wait</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">join_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_until</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait_until</span><span class="special">(</span><span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span> <span class="identifier">Duration</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">wait_for</span><span class="special"><</span><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>,</span><span class="identifier">Duration</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">R</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="identifier">rel_time</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">act</span><span class="special">.</span><span class="identifier">timed_wait</span><span class="special">(</span><span class="identifier">rel_time</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__" title="Class
+ launcher ">Class
+ <code class="computeroutput"><span class="identifier">launcher</span> </code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.member_function__launcher__attributes_">Member
+ function <code class="computeroutput"><span class="identifier">launcher</span><span class="special">::</span><span class="identifier">attributes</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.metafunction__launcher__handle___">Metafunction
+ <code class="computeroutput"><span class="identifier">launcher</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.member_function__lancher__fork_">Member
+ function <code class="computeroutput"><span class="identifier">lancher</span><span class="special">::</span><span class="identifier">fork</span></code></a></span></dt>
+</dl></div>
+<p>
+ Thread launcher using a common configuration managed with the thread
+ attributes and returning on the fork operation a unique_future to the
+ resulting type of the call to the threaded function.
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">launcher</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">();</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.member_function__launcher__attributes_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.member_function__launcher__attributes_" title="Member
+ function launcher::attributes">Member
+ function <code class="computeroutput"><span class="identifier">launcher</span><span class="special">::</span><span class="identifier">attributes</span></code></a>
+</h6></div></div></div>
+<p>
+ Reference to the thread attributes accesor.
+ </p>
+<pre class="programlisting"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attributes</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A reference to the thread attributes.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.metafunction__launcher__handle___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.metafunction__launcher__handle___" title="Metafunction
+ launcher::handle<>">Metafunction
+ <code class="computeroutput"><span class="identifier">launcher</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a>
+</h6></div></div></div>
+<p>
+ Metafunction that returns the result type of the fork function applied
+ to a launcher and the value type.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ L::handle<T>::type
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ A unique_future<T>.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.member_function__lancher__fork_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__launcher__.member_function__lancher__fork_" title="Member
+ function lancher::fork">Member
+ function <code class="computeroutput"><span class="identifier">lancher</span><span class="special">::</span><span class="identifier">fork</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+<span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A unique_future to the result of calling a function F.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ create a thread executing the function f. The result of the function
+ will be stored on the resulting future.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__" title="Class
+ shared_launcher ">Class
+ <code class="computeroutput"><span class="identifier">shared_launcher</span> </code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.member_function__shared_launcher__attributes_">Member
+ function <code class="computeroutput"><span class="identifier">shared_launcher</span><span class="special">::</span><span class="identifier">attributes</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.metafunction__shared_launcher__handle___">Metafunction
+ <code class="computeroutput"><span class="identifier">shared_launcher</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.member_function__lancher__fork_">Member
+ function <code class="computeroutput"><span class="identifier">lancher</span><span class="special">::</span><span class="identifier">fork</span></code></a></span></dt>
+</dl></div>
+<p>
+ Thread shared_launcher using a common configuration managed with the
+ thread attributes and returning on the fork operation a unique_future
+ to the resulting type of the call to the threaded function.
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">shared_launcher</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">();</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.member_function__shared_launcher__attributes_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.member_function__shared_launcher__attributes_" title="Member
+ function shared_launcher::attributes">Member
+ function <code class="computeroutput"><span class="identifier">shared_launcher</span><span class="special">::</span><span class="identifier">attributes</span></code></a>
+</h6></div></div></div>
+<p>
+ Reference to the thread attributes accesor.
+ </p>
+<pre class="programlisting"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attributes</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A reference to the thread attributes.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.metafunction__shared_launcher__handle___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.metafunction__shared_launcher__handle___" title="Metafunction
+ shared_launcher::handle<>">Metafunction
+ <code class="computeroutput"><span class="identifier">shared_launcher</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a>
+</h6></div></div></div>
+<p>
+ Metafunction that returns the result type of the fork function applied
+ to a shared_launcher and the value type.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ L::handle<T>::type
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ A unique_future<T>.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.member_function__lancher__fork_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.launcher_hpp.class__shared_launcher__.member_function__lancher__fork_" title="Member
+ function lancher::fork">Member
+ function <code class="computeroutput"><span class="identifier">lancher</span><span class="special">::</span><span class="identifier">fork</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="identifier">unique_future</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+<span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A unique_future to the result of calling a function F.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ create a thread executing the function f. The result of the function
+ will be stored on the resulting future.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp" title="
+ Header <boost/async/threader.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___">Template
+ Class <code class="computeroutput"><span class="identifier">unique_joiner</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.non_member_swap">
+ Non-member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_">Template
+ Class <code class="computeroutput"><span class="identifier">unique_threader</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___">Template
+ Class <code class="computeroutput"><span class="identifier">shared_joiner</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.non_member_swap2">
+ Non-member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_">Template
+ Class <code class="computeroutput"><span class="identifier">shared_threader</span></code></a></span></dt>
+</dl></div>
+<p>
+ A threader is an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ with an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ that model <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>
+ and <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>.
+ </p>
+<p>
+ The library defines two kind of threaders: unique_threader and shared_threader
+ that respectively have a unique_joiner and a shared_joiner as <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">fork</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+<span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ResultType</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">unique_joiner</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ResultType</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unique_joiner</span><span class="special"><</span><span class="identifier">ResultType</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">unique_joiner</span><span class="special"><</span><span class="identifier">ResultType</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="keyword">class</span> <span class="identifier">unique_threader</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ResultType</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">shared_joiner</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ResultType</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">shared_joiner</span><span class="special"><</span><span class="identifier">ResultType</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">shared_joiner</span><span class="special"><</span><span class="identifier">ResultType</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="keyword">class</span> <span class="identifier">shared_threader</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___" title="Template
+ Class unique_joiner<>">Template
+ Class <code class="computeroutput"><span class="identifier">unique_joiner</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.destructor">
+ unique_joiner Destructor</a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.swap">
+ Member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__get___operator_____">Member
+ Function <code class="computeroutput"><span class="identifier">get</span><span class="special">()|</span><span class="keyword">operator</span><span class="special">()()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__is_ready___">Member
+ Function <code class="computeroutput"><span class="identifier">is_ready</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__has_exception___">Member
+ Function <code class="computeroutput"><span class="identifier">has_exception</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__has_value___">Member
+ Function <code class="computeroutput"><span class="identifier">has_value</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__wait___">Member
+ Function <code class="computeroutput"><span class="identifier">wait</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__wait_until___wait_for___">Member
+ Function <code class="computeroutput"><span class="identifier">wait_until</span><span class="special">()|</span><span class="identifier">wait_for</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.joinable">
+ Member function <code class="computeroutput"><span class="identifier">joinable</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.join">
+ Member function <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__join_until___join_for___">Member
+ function <code class="computeroutput"><span class="identifier">join_until</span><span class="special">()|</span><span class="identifier">join_for</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.detach">
+ Member function <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.get_id">
+ Member function <code class="computeroutput"><span class="identifier">get_id</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.interrupt">
+ Member function <code class="computeroutput"><span class="identifier">interrupt</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.nativehandle">
+ Member function <code class="computeroutput"><span class="identifier">native_handle</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ResultType</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">unique_joiner</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_joiner</span> <span class="identifier">this_type</span><span class="special">;</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">unique_joiner</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">unique_joiner</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="keyword">delete</span><span class="special">;</span>
+ <span class="identifier">unique_joiner</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">unique_joiner</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="keyword">delete</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">ResultType</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Nullary</span><span class="special">></span>
+ <span class="identifier">unique_joiner</span><span class="special">(</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">,</span> <span class="identifier">Nullary</span> <span class="identifier">f</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Nullary</span><span class="special">></span>
+ <span class="identifier">unique_joiner</span><span class="special">(</span><span class="identifier">Nullary</span> <span class="identifier">f</span><span class="special">);</span>
+
+ <span class="identifier">unique_joiner</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">unique_joiner</span><span class="special">></span> <span class="identifier">x</span><span class="special">);</span>
+ <span class="identifier">unique_joiner</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">unique_joiner</span><span class="special">></span> <span class="identifier">x</span><span class="special">);</span>
+ <span class="keyword">operator</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">unique_joiner</span><span class="special">>();</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">unique_joiner</span><span class="special">></span> <span class="identifier">move</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">this_type</span><span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">bool</span> <span class="identifier">joinable</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">join</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">join_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">bool</span> <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+ <span class="identifier">result_type</span> <span class="identifier">get</span><span class="special">();</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()();</span>
+
+ <span class="keyword">bool</span> <span class="identifier">is_ready</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="identifier">has_exception</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="identifier">has_value</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="identifier">wait</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="identifier">wait_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">bool</span> <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">get_id</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">detach</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="identifier">interrupt</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">interruption_requested</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">platform</span><span class="special">-</span><span class="identifier">specific</span><span class="special">-</span><span class="identifier">type</span> <span class="identifier">native_handle_type</span><span class="special">;</span>
+ <span class="identifier">native_handle_type</span> <span class="identifier">native_handle</span><span class="special">();</span>
+
+ <span class="identifier">unique_future</span><span class="special"><</span><span class="identifier">result_type</span><span class="special">></span> <span class="identifier">get_future</span><span class="special">();</span>
+
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.destructor"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.destructor" title="
+ unique_joiner Destructor">
+ unique_joiner Destructor</a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">unique_joiner</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ has an associated thread of execution, calls <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code>. Destroys <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.swap"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.swap" title="
+ Member function swap()">
+ Member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unique_joiner</span><span class="special">&</span> <span class="identifier">other</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Exchanges the threads of execution associated with <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ and <code class="computeroutput"><span class="identifier">other</span></code>, so
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ is associated with the thread of execution associated with <code class="computeroutput"><span class="identifier">other</span></code> prior to the call, and
+ vice-versa.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_id</span><span class="special">()</span></code>
+ returns the same value as <code class="computeroutput"><span class="identifier">other</span><span class="special">.</span><span class="identifier">get_id</span><span class="special">()</span></code> prior to the call. <code class="computeroutput"><span class="identifier">other</span><span class="special">.</span><span class="identifier">get_id</span><span class="special">()</span></code>
+ returns the same value as <code class="computeroutput"><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_id</span><span class="special">()</span></code> prior to the call.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__get___operator_____"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__get___operator_____" title="Member
+ Function get()|operator()()">Member
+ Function <code class="computeroutput"><span class="identifier">get</span><span class="special">()|</span><span class="keyword">operator</span><span class="special">()()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="identifier">result_type</span> <span class="identifier">get</span><span class="special">();</span>
+<span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Retrieves the value returned by the Nullary function.
+ </p></dd>
+<dt><span class="term">Sychronization:</span></dt>
+<dd><p>
+ The completion of the call to the operator()() the Nullary function
+ happens before get() returns.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ If the result type R is a reference, returns the stored reference.
+ If R is void, there is no return value. Otherwise, returns an rvalue-reference
+ to the value stored in the asynchronous result.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ It is unspecified what happens when get() is called a second time
+ on the same unique_joiner.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__is_ready___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__is_ready___" title="Member
+ Function is_ready()">Member
+ Function <code class="computeroutput"><span class="identifier">is_ready</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">is_ready</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if the associated state holds a value or an exception
+ ready for retrieval.
+ </p></dd>
+<dt><span class="term">Remark:</span></dt>
+<dd><p>
+ the return value is unspecified after a call to get().
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__has_exception___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__has_exception___" title="Member
+ Function has_exception()">Member
+ Function <code class="computeroutput"><span class="identifier">has_exception</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">has_exception</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if is_ready() == true and the associated state contains
+ an exception.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__has_value___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__has_value___" title="Member
+ Function has_value()">Member
+ Function <code class="computeroutput"><span class="identifier">has_value</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">has_value</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if is_ready() == true and the associated state contains
+ a value.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__wait___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__wait___" title="Member
+ Function wait()">Member
+ Function <code class="computeroutput"><span class="identifier">wait</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">wait</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Blocks until the Nullariry function ends.
+ </p></dd>
+<dt><span class="term">Sychronization:</span></dt>
+<dd><p>
+ The completion of the call to the operator()() the Nullary function
+ happens before wait() returns.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ is_ready() == true.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__wait_until___wait_for___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__wait_until___wait_for___" title="Member
+ Function wait_until()|wait_for()">Member
+ Function <code class="computeroutput"><span class="identifier">wait_until</span><span class="special">()|</span><span class="identifier">wait_for</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">wait_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Blocks until the Nullariry function ends.
+ </p></dd>
+<dt><span class="term">Sychronization:</span></dt>
+<dd><p>
+ The completion of the call to the operator()() the Nullary function
+ happens before wait() returns.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ If the result type R is a reference, returns the stored reference.
+ If R is void, there is no return value. Otherwise, returns an rvalue-reference
+ to the value stored in the asynchronous result.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ is_ready() == true.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.joinable"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.joinable" title="
+ Member function joinable()">
+ Member function <code class="computeroutput"><span class="identifier">joinable</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">joinable</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, <code class="computeroutput"><span class="keyword">false</span></code>
+ otherwise.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.join"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.join" title="
+ Member function join()">
+ Member function <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">join</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Preconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_id</span><span class="special">()!=</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code>
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, waits for that thread of execution
+ to complete.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution on entry, that thread of execution
+ has completed. <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ no longer refers to any thread of execution.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code> if the current
+ thread of execution is interrupted.
+ </p></dd>
+<dt><span class="term">Notes:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ is one of the predefined <span class="emphasis"><em>interruption points</em></span>.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__join_until___join_for___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.member_function__join_until___join_for___" title="Member
+ function join_until()|join_for()">Member
+ function <code class="computeroutput"><span class="identifier">join_until</span><span class="special">()|</span><span class="identifier">join_for</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">join_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">wait_until</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Preconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_id</span><span class="special">()!=</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code>
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, waits for that thread of execution
+ to complete, the time <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ has been reach or the specified duration <code class="computeroutput"><span class="identifier">rel_time</span></code>
+ has elapsed. If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> doesn't refer to a thread of
+ execution, returns immediately.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution on entry, and that thread of execution
+ has completed before the call times out, <code class="computeroutput"><span class="keyword">false</span></code>
+ otherwise.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution on entry, and <code class="computeroutput"><span class="identifier">timed_join</span></code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, that
+ thread of execution has completed, and <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> no longer refers to any thread
+ of execution. If this call to <code class="computeroutput"><span class="identifier">timed_join</span></code>
+ returns <code class="computeroutput"><span class="keyword">false</span></code>, <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ is unchanged.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code> if the current
+ thread of execution is interrupted.
+ </p></dd>
+<dt><span class="term">Notes:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ is one of the predefined <span class="emphasis"><em>interruption points</em></span>.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.detach"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.detach" title="
+ Member function detach()">
+ Member function <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">detach</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, that thread of execution becomes
+ detached, and no longer has an associated <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code>
+ object.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ no longer refers to any thread of execution.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.get_id"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.get_id" title="
+ Member function get_id()">
+ Member function <code class="computeroutput"><span class="identifier">get_id</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">get_id</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span></code>
+ that represents that thread. Otherwise returns a default-constructed
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span></code>.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.interrupt"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.interrupt" title="
+ Member function interrupt()">
+ Member function <code class="computeroutput"><span class="identifier">interrupt</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">interrupt</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, request that the thread will be
+ interrupted the next time it enters one of the predefined <span class="emphasis"><em>interruption
+ points</em></span> with interruption enabled, or if it is currently
+ <span class="emphasis"><em>blocked</em></span> in a call to one of the predefined
+ <span class="emphasis"><em>interruption points</em></span> with interruption enabled
+ .
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.nativehandle"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_joiner___.nativehandle" title="
+ Member function native_handle()">
+ Member function <code class="computeroutput"><span class="identifier">native_handle</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">platform</span><span class="special">-</span><span class="identifier">specific</span><span class="special">-</span><span class="identifier">type</span> <span class="identifier">native_handle_type</span><span class="special">;</span>
+<span class="identifier">native_handle_type</span> <span class="identifier">native_handle</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Returns an instance of <code class="computeroutput"><span class="identifier">native_handle_type</span></code>
+ that can be used with platform-specific APIs to manipulate the
+ underlying implementation. If no such instance exists, <code class="computeroutput"><span class="identifier">native_handle</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">native_handle_type</span></code>
+ are not present.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.non_member_swap"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.non_member_swap" title="
+ Non-member function swap()">
+ Non-member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unique_joiner</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span><span class="identifier">unique_joiner</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">lhs</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">)</span></code>.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_" title="Template
+ Class unique_threader">Template
+ Class <code class="computeroutput"><span class="identifier">unique_threader</span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.member_function__unique_threader__attributes___">Member
+ function <code class="computeroutput"><span class="identifier">unique_threader</span><span class="special">::</span><span class="identifier">attributes</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.metafunction__unique_threader__handle___">Metafunction
+ <code class="computeroutput"><span class="identifier">unique_threader</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.member_function__unique_threader__fork_">Member
+ function <code class="computeroutput"><span class="identifier">unique_threader</span><span class="special">::</span><span class="identifier">fork</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">unique_threader</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attributes</span><span class="special">();</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_joiner</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">unique_joiner</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.member_function__unique_threader__attributes___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.member_function__unique_threader__attributes___" title="Member
+ function unique_threader::attributes()">Member
+ function <code class="computeroutput"><span class="identifier">unique_threader</span><span class="special">::</span><span class="identifier">attributes</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<p>
+ Reference to the thread attributes accesor.
+ </p>
+<pre class="programlisting"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attributes</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A reference to the thread attributes.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.metafunction__unique_threader__handle___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.metafunction__unique_threader__handle___" title="Metafunction
+ unique_threader::handle<>">Metafunction
+ <code class="computeroutput"><span class="identifier">unique_threader</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a>
+</h6></div></div></div>
+<p>
+ Metafunction that returns the result type of the fork function applied
+ to a unique_threader and the value type.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unique_joiner</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ L::handle<T>::type
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ A unique_joiner<T>.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.member_function__unique_threader__fork_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__unique_threader_.member_function__unique_threader__fork_" title="Member
+ function unique_threader::fork">Member
+ function <code class="computeroutput"><span class="identifier">unique_threader</span><span class="special">::</span><span class="identifier">fork</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="identifier">unique_joiner</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+<span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A unique_joiner to the result of calling a function F.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ create a thread executing the function f. The result of the function
+ will be stored on the resulting unique_joiner.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___" title="Template
+ Class shared_joiner<>">Template
+ Class <code class="computeroutput"><span class="identifier">shared_joiner</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.destructor">
+ shared_joiner Destructor</a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.swap2">
+ Member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__get___operator_____">Member
+ Function <code class="computeroutput"><span class="identifier">get</span><span class="special">()|</span><span class="keyword">operator</span><span class="special">()()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__is_ready___">Member
+ Function <code class="computeroutput"><span class="identifier">is_ready</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__has_exception___">Member
+ Function <code class="computeroutput"><span class="identifier">has_exception</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__has_value___">Member
+ Function <code class="computeroutput"><span class="identifier">has_value</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__wait___">Member
+ Function <code class="computeroutput"><span class="identifier">wait</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__wait_until___wait_for___">Member
+ Function <code class="computeroutput"><span class="identifier">wait_until</span><span class="special">()|</span><span class="identifier">wait_for</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.joinable2">
+ Member function <code class="computeroutput"><span class="identifier">joinable</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.join2">
+ Member function <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__join_until___join_for___">Member
+ function <code class="computeroutput"><span class="identifier">join_until</span><span class="special">()|</span><span class="identifier">join_for</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.detach3">
+ Member function <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.get_id2">
+ Member function <code class="computeroutput"><span class="identifier">get_id</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.interrupt2">
+ Member function <code class="computeroutput"><span class="identifier">interrupt</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.nativehandle2">
+ Member function <code class="computeroutput"><span class="identifier">native_handle</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ResultType</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">shared_joiner</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">shared_joiner</span> <span class="identifier">this_type</span><span class="special">;</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">shared_joiner</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">shared_joiner</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">shared_joiner</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">shared_joiner</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">ResultType</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Nullary</span><span class="special">></span>
+ <span class="identifier">shared_joiner</span><span class="special">(</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">,</span> <span class="identifier">Nullary</span> <span class="identifier">f</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Nullary</span><span class="special">></span>
+ <span class="identifier">shared_joiner</span><span class="special">(</span><span class="identifier">Nullary</span> <span class="identifier">f</span><span class="special">);</span>
+
+ <span class="identifier">shared_joiner</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">shared_joiner</span><span class="special">></span> <span class="identifier">x</span><span class="special">);</span>
+ <span class="identifier">shared_joiner</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">shared_joiner</span><span class="special">></span> <span class="identifier">x</span><span class="special">);</span>
+ <span class="keyword">operator</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">shared_joiner</span><span class="special">>();</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special"><</span><span class="identifier">shared_joiner</span><span class="special">></span> <span class="identifier">move</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">this_type</span><span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">bool</span> <span class="identifier">joinable</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">join</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">join_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">bool</span> <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+ <span class="identifier">result_type</span> <span class="identifier">get</span><span class="special">();</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()();</span>
+
+ <span class="keyword">bool</span> <span class="identifier">is_ready</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="identifier">has_exception</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="identifier">has_value</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="identifier">wait</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="identifier">wait_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">bool</span> <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">get_id</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">detach</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="identifier">interrupt</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">interruption_requested</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">platform</span><span class="special">-</span><span class="identifier">specific</span><span class="special">-</span><span class="identifier">type</span> <span class="identifier">native_handle_type</span><span class="special">;</span>
+ <span class="identifier">native_handle_type</span> <span class="identifier">native_handle</span><span class="special">();</span>
+
+ <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">result_type</span><span class="special">></span> <span class="identifier">get_future</span><span class="special">();</span>
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.destructor"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.destructor" title="
+ shared_joiner Destructor">
+ shared_joiner Destructor</a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">shared_joiner</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ has an associated thread of execution, calls <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code>. Destroys <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.swap2"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.swap2" title="
+ Member function swap()">
+ Member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">shared_joiner</span><span class="special">&</span> <span class="identifier">other</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Exchanges the threads of execution associated with <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ and <code class="computeroutput"><span class="identifier">other</span></code>, so
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ is associated with the thread of execution associated with <code class="computeroutput"><span class="identifier">other</span></code> prior to the call, and
+ vice-versa.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_id</span><span class="special">()</span></code>
+ returns the same value as <code class="computeroutput"><span class="identifier">other</span><span class="special">.</span><span class="identifier">get_id</span><span class="special">()</span></code> prior to the call. <code class="computeroutput"><span class="identifier">other</span><span class="special">.</span><span class="identifier">get_id</span><span class="special">()</span></code>
+ returns the same value as <code class="computeroutput"><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_id</span><span class="special">()</span></code> prior to the call.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__get___operator_____"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__get___operator_____" title="Member
+ Function get()|operator()()">Member
+ Function <code class="computeroutput"><span class="identifier">get</span><span class="special">()|</span><span class="keyword">operator</span><span class="special">()()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="identifier">result_type</span> <span class="identifier">get</span><span class="special">();</span>
+<span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Retrieves the value returned by the Nullary function.
+ </p></dd>
+<dt><span class="term">Sychronization:</span></dt>
+<dd><p>
+ The completion of the call to the operator()() the Nullary function
+ happens before get() returns.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ If the result type R is a reference, returns the stored reference.
+ If R is void, there is no return value. Otherwise, returns an rvalue-reference
+ to the value stored in the asynchronous result.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ It is unspecified what happens when get() is called a second time
+ on the same shared_joiner.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__is_ready___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__is_ready___" title="Member
+ Function is_ready()">Member
+ Function <code class="computeroutput"><span class="identifier">is_ready</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">is_ready</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if the associated state holds a value or an exception
+ ready for retrieval.
+ </p></dd>
+<dt><span class="term">Remark:</span></dt>
+<dd><p>
+ the return value is unspecified after a call to get().
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__has_exception___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__has_exception___" title="Member
+ Function has_exception()">Member
+ Function <code class="computeroutput"><span class="identifier">has_exception</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">has_exception</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if is_ready() == true and the associated state contains
+ an exception.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__has_value___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__has_value___" title="Member
+ Function has_value()">Member
+ Function <code class="computeroutput"><span class="identifier">has_value</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">has_value</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if is_ready() == true and the associated state contains
+ a value.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__wait___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__wait___" title="Member
+ Function wait()">Member
+ Function <code class="computeroutput"><span class="identifier">wait</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">wait</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Blocks until the Nullariry function ends.
+ </p></dd>
+<dt><span class="term">Sychronization:</span></dt>
+<dd><p>
+ The completion of the call to the operator()() the Nullary function
+ happens before wait() returns.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ is_ready() == true.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__wait_until___wait_for___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__wait_until___wait_for___" title="Member
+ Function wait_until()|wait_for()">Member
+ Function <code class="computeroutput"><span class="identifier">wait_until</span><span class="special">()|</span><span class="identifier">wait_for</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">wait_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Blocks until the Nullariry function ends.
+ </p></dd>
+<dt><span class="term">Sychronization:</span></dt>
+<dd><p>
+ The completion of the call to the operator()() the Nullary function
+ happens before wait() returns.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ If the result type R is a reference, returns the stored reference.
+ If R is void, there is no return value. Otherwise, returns an rvalue-reference
+ to the value stored in the asynchronous result.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ is_ready() == true.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.joinable2"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.joinable2" title="
+ Member function joinable()">
+ Member function <code class="computeroutput"><span class="identifier">joinable</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">joinable</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, <code class="computeroutput"><span class="keyword">false</span></code>
+ otherwise.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.join2"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.join2" title="
+ Member function join()">
+ Member function <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">join</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Preconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_id</span><span class="special">()!=</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code>
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, waits for that thread of execution
+ to complete.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution on entry, that thread of execution
+ has completed. <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ no longer refers to any thread of execution.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code> if the current
+ thread of execution is interrupted.
+ </p></dd>
+<dt><span class="term">Notes:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ is one of the predefined <span class="emphasis"><em>interruption points</em></span>.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__join_until___join_for___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.member_function__join_until___join_for___" title="Member
+ function join_until()|join_for()">Member
+ function <code class="computeroutput"><span class="identifier">join_until</span><span class="special">()|</span><span class="identifier">join_for</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">join_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">wait_until</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Preconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-></span><span class="identifier">get_id</span><span class="special">()!=</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code>
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, waits for that thread of execution
+ to complete, the time <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ has been reach or the specified duration <code class="computeroutput"><span class="identifier">rel_time</span></code>
+ has elapsed. If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> doesn't refer to a thread of
+ execution, returns immediately.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution on entry, and that thread of execution
+ has completed before the call times out, <code class="computeroutput"><span class="keyword">false</span></code>
+ otherwise.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution on entry, and <code class="computeroutput"><span class="identifier">timed_join</span></code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, that
+ thread of execution has completed, and <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> no longer refers to any thread
+ of execution. If this call to <code class="computeroutput"><span class="identifier">timed_join</span></code>
+ returns <code class="computeroutput"><span class="keyword">false</span></code>, <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ is unchanged.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code> if the current
+ thread of execution is interrupted.
+ </p></dd>
+<dt><span class="term">Notes:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ is one of the predefined <span class="emphasis"><em>interruption points</em></span>.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.detach3"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.detach3" title="
+ Member function detach()">
+ Member function <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">detach</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, that thread of execution becomes
+ detached, and no longer has an associated <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code>
+ object.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ no longer refers to any thread of execution.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.get_id2"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.get_id2" title="
+ Member function get_id()">
+ Member function <code class="computeroutput"><span class="identifier">get_id</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">get_id</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span></code>
+ that represents that thread. Otherwise returns a default-constructed
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span></code>.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.interrupt2"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.interrupt2" title="
+ Member function interrupt()">
+ Member function <code class="computeroutput"><span class="identifier">interrupt</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">interrupt</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a thread of execution, request that the thread will be
+ interrupted the next time it enters one of the predefined <span class="emphasis"><em>interruption
+ points</em></span> with interruption enabled, or if it is currently
+ <span class="emphasis"><em>blocked</em></span> in a call to one of the predefined
+ <span class="emphasis"><em>interruption points</em></span> with interruption enabled
+ .
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.nativehandle2"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___.nativehandle2" title="
+ Member function native_handle()">
+ Member function <code class="computeroutput"><span class="identifier">native_handle</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">platform</span><span class="special">-</span><span class="identifier">specific</span><span class="special">-</span><span class="identifier">type</span> <span class="identifier">native_handle_type</span><span class="special">;</span>
+<span class="identifier">native_handle_type</span> <span class="identifier">native_handle</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Returns an instance of <code class="computeroutput"><span class="identifier">native_handle_type</span></code>
+ that can be used with platform-specific APIs to manipulate the
+ underlying implementation. If no such instance exists, <code class="computeroutput"><span class="identifier">native_handle</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">native_handle_type</span></code>
+ are not present.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.non_member_swap2"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.non_member_swap2" title="
+ Non-member function swap()">
+ Non-member function <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">shared_joiner</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span><span class="identifier">shared_joiner</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">lhs</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">)</span></code>.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_" title="Template
+ Class shared_threader">Template
+ Class <code class="computeroutput"><span class="identifier">shared_threader</span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.member_function__shared_threader__attributes___">Member
+ function <code class="computeroutput"><span class="identifier">shared_threader</span><span class="special">::</span><span class="identifier">attributes</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.metafunction__shared_threader__handle___">Metafunction
+ <code class="computeroutput"><span class="identifier">shared_threader</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.member_function__shared_threader__fork_">Member
+ function <code class="computeroutput"><span class="identifier">shared_threader</span><span class="special">::</span><span class="identifier">fork</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">shared_threader</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attributes</span><span class="special">();</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">shared_joiner</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">shared_joiner</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.member_function__shared_threader__attributes___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.member_function__shared_threader__attributes___" title="Member
+ function shared_threader::attributes()">Member
+ function <code class="computeroutput"><span class="identifier">shared_threader</span><span class="special">::</span><span class="identifier">attributes</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<p>
+ Reference to the thread attributes accesor.
+ </p>
+<pre class="programlisting"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">native_handle_attr_type</span><span class="special">&</span> <span class="identifier">attributes</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A reference to the thread attributes.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.metafunction__shared_threader__handle___"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.metafunction__shared_threader__handle___" title="Metafunction
+ shared_threader::handle<>">Metafunction
+ <code class="computeroutput"><span class="identifier">shared_threader</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><></span></code></a>
+</h6></div></div></div>
+<p>
+ Metafunction that returns the result type of the fork function applied
+ to a shared_threader and the value type.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">shared_joiner</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Expression:</span></dt>
+<dd><p>
+ L::handle<T>::type
+ </p></dd>
+<dt><span class="term">Return type:</span></dt>
+<dd><p>
+ A shared_joiner<T>.
+ </p></dd>
+<dt><span class="term">Complexity:</span></dt>
+<dd><p>
+ constant.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.member_function__shared_threader__fork_"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_threader_.member_function__shared_threader__fork_" title="Member
+ function shared_threader::fork">Member
+ function <code class="computeroutput"><span class="identifier">shared_threader</span><span class="special">::</span><span class="identifier">fork</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="identifier">shared_joiner</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+<span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ A shared_joiner to the result of calling a function F.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ create a thread executing the function f. The result of the function
+ will be stored on the resulting shared_joiner.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.scheduler_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.scheduler_hpp" title="
+ Header <boost/async/scheduler.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">scheduler</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code> can be seen as a <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ adding some functions and specializing some traits classes. The functions
+ are:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ get_future
+ </li>
+<li>
+ interruption_requested
+ </li>
+</ul></div>
+<p>
+ The traits are:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ asynchronous_completion_token : associating the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code><code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code>
+</li>
+<li>
+ partial_specialization_workaround::fork::apply: to call to submit instead
+ of fork.
+ </li>
+</ul></div>
+<p>
+ <code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code> is an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ that models <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>
+ and <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">scheduler</span> <span class="special">{</span>
+ <span class="keyword">explicit</span> <span class="identifier">scheduler</span><span class="special">(</span>
+ <span class="identifier">tp</span><span class="special">::</span><span class="identifier">poolsize</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">psize</span>
+ <span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span><span class="special">></span>
+ <span class="identifier">fork</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Channel</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_future</span><span class="special"><</span><span class="identifier">scheduler</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">future_type</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">);</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Channel</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>,</span><span class="identifier">T</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">partial_specialization_workaround</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Channel</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">fork</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>,</span><span class="identifier">F</span><span class="special">></span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fork</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>,</span> <span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">apply</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">Channel</span><span class="special">>&</span> <span class="identifier">ae</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fn</span> <span class="special">);</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_future</span><span class="special"><</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span><span class="identifier">C</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">act</span><span class="special">);</span>
+ <span class="special">};</span>
+
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special"><</span><span class="identifier">R</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">{};</span>
+<span class="special">}}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.typeof_futures_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_futures_hpp" title="
+ Header <boost/async/typeof/future.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">future</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ Include this files instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">futures</span><span class="special">/</span><span class="identifier">future</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ if you want TypeOf support.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">futures</span><span class="special">/</span><span class="identifier">future</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="identifier">BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP</span><span class="special">()</span>
+
+<span class="identifier">BOOST_TYPEOF_REGISTER_TEMPLATE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">unique_future</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+<span class="identifier">BOOST_TYPEOF_REGISTER_TEMPLATE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">shared_future</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+<span class="identifier">BOOST_TYPEOF_REGISTER_TEMPLATE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">promise</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+<span class="identifier">BOOST_TYPEOF_REGISTER_TEMPLATE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">packaged_task</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.typeof_launcher_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_launcher_hpp" title="
+ Header <boost/async/typeof/launcher.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">launcher</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ Include this files instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">launcher</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ if you want TypeOf support.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">launcher</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">future</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="identifier">BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP</span><span class="special">()</span>
+
+<span class="identifier">BOOST_TYPEOF_REGISTER_TYPE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">launcher</span><span class="special">)</span>
+<span class="identifier">BOOST_TYPEOF_REGISTER_TYPE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">shared_launcher</span><span class="special">)</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.typeof_threader_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_threader_hpp" title="
+ Header <boost/async/typeof/threader.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ Include this files instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ if you want TypeOf support.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="identifier">BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP</span><span class="special">()</span>
+
+<span class="identifier">BOOST_TYPEOF_REGISTER_TYPE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">unique_threader</span><span class="special">)</span>
+<span class="identifier">BOOST_TYPEOF_REGISTER_TEMPLATE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">unique_joiner</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+
+<span class="identifier">BOOST_TYPEOF_REGISTER_TYPE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">shared_threader</span><span class="special">)</span>
+<span class="identifier">BOOST_TYPEOF_REGISTER_TEMPLATE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">shared_joiner</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.typeof_basic_threaderr_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_basic_threaderr_hpp" title="
+ Header <boost/async/typeof/basic_threader.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ Include this files instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ if you want TypeOf support.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="identifier">BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP</span><span class="special">()</span>
+
+<span class="identifier">BOOST_TYPEOF_REGISTER_TYPE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">basic_threader</span><span class="special">)</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.typeof_scheduler_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.typeof_scheduler_hpp" title="
+ Header <boost/async/typeof/scheduler.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">scheduler</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<p>
+ Include this files instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">scheduler</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ if you want TypeOf support.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">scheduler</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="identifier">BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP</span><span class="special">()</span>
+
+<span class="identifier">BOOST_TYPEOF_REGISTER_TEMPLATE</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.ae_act_models_reference.asynchronous_executor_decorator_hpp"></a><a href="ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.asynchronous_executor_decorator_hpp" title="
+ Header <boost/async/asynchronous_executor_decorator.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">asynchronous_executor_decorator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">async</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">Decorator</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">asynchronous_executor_decorator</span> <span class="special">:</span> <span class="identifier">AE</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">handle</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">handle</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">handle</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">fork</span><span class="special">(</span> <span class="identifier">F</span> <span class="identifier">fn</span> <span class="special">);</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">,</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">Decorator</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_future</span><span class="special"><</span><span class="identifier">asynchronous_executor_decorator</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">Decorator</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">future_type</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">get_future</span><span class="special"><</span><span class="identifier">AE</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">future_type</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">typename</span> <span class="identifier">AE</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">handle</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span> <span class="special">&</span> <span class="identifier">j</span><span class="special">);</span>
+ <span class="special">};</span>
+<span class="special">}}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ae_act_framework_reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../examples.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/reference/concepts.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/reference/concepts.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,1875 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Concepts</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="../reference.html" title=" Reference">
+<link rel="next" href="ae_act_framework_reference.html" title="AE/ACT
+ Framework Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="ae_act_framework_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.reference.concepts"></a>Concepts
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts">Asynchronous
+ Completion Token Concepts</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT">
+ Concept <code class="computeroutput"><span class="identifier">ACT</span></code> </a></span></dt>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT">
+ Concept <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>
+ </a></span></dt>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT">
+ Concept <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>
+ </a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts">Asynchronous
+ Executors Concepts</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_">Concept
+ <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code></a></span></dt>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_">Concept
+ <code class="computeroutput"><span class="identifier">IntrinsicAsynchronousExecutor</span></code></a></span></dt>
+</dl></dd>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts"></a><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts" title="Asynchronous
+ Completion Token Concepts">Asynchronous
+ Completion Token Concepts</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT">
+ Concept <code class="computeroutput"><span class="identifier">ACT</span></code> </a></span></dt>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT">
+ Concept <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>
+ </a></span></dt>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT">
+ Concept <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>
+ </a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT"></a><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT" title="
+ Concept ACT ">
+ Concept <code class="computeroutput"><span class="identifier">ACT</span></code> </a>
+</h5></div></div></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.description"></a><h6>
+<a name="id4820895"></a>
+ Description
+ </h6>
+<p>
+ An <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ allows to wait for the completion of an asynchronous executed operation.
+ An <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ should be <code class="computeroutput"><span class="identifier">Movable</span></code> or
+ <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>. The
+ completion of the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ is undefined at this level. Different models could signal this completion
+ when setting a value or an exception.
+ </p>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.notation"></a><h6>
+<a name="id4820970"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">act</span></code></span></dt>
+<dd><p>
+ An <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">Nullary</span></code> function
+ with type F
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">abs_time</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">system_time</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">rel_time</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">DurationType</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+ A bool
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression_requirements"></a><h6>
+<a name="id4821128"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression_requirements">Expression
+ requirements</a>
+ </h6>
+<p>
+ A type models a <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ if, the following expressions are valid:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return type
+ </p>
+ </th>
+<th>
+ <p>
+ Runtime Complexity
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">wait</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">wait_until</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span>
+ <span class="identifier">abs_time</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span>
+ <span class="identifier">rel_time</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.meta_expressions"></a><h6>
+<a name="id4821375"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.meta_expressions">Meta
+ Expressions</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Compile Time Complexity
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">move_dest_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Any
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">move_result</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ MPL boolean
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">is_movable</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ MPL boolean
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">has_future_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ MPL boolean
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">has_thread_if</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ MPL boolean
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression_semantics"></a><h6>
+<a name="id4821676"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">wait</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Blocks until the <code class="computeroutput"><span class="identifier">act</span></code>
+ completes
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">wait_until</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span><span class="identifier">abs_time</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Blocks until the <code class="computeroutput"><span class="identifier">act</span></code>
+ completes or <code class="computeroutput"><span class="identifier">abs_time</span></code>
+ is reached
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span><span class="identifier">rel_time</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Blocks until the <code class="computeroutput"><span class="identifier">act</span></code>
+ completes or <code class="computeroutput"><span class="identifier">rel_time</span></code>
+ has been elapsed
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression__code__phrase_role__identifier__wait__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4821931"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression__code__phrase_role__identifier__wait__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">wait</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Blocks until the <code class="computeroutput"><span class="identifier">act</span></code>
+ completes.
+ </p></dd>
+<dt><span class="term">Synchronization:</span></dt>
+<dd><p>
+ The completion of <code class="computeroutput"><span class="identifier">act</span></code>
+ happens before wait() returns.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ is_ready(act) == true.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__wait_until__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase__phrase_role__identifier__abs_time__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4822075"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__wait_until__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase__phrase_role__identifier__abs_time__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">wait_until</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span><span class="identifier">abs_time</span><span class="special">)</span></code></a>
+ </h6>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">wait_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Blocks until the <code class="computeroutput"><span class="identifier">act</span></code>
+ completes or <code class="computeroutput"><span class="identifier">abs_time</span></code>
+ is not reached.
+ </p></dd>
+<dt><span class="term">Synchronization:</span></dt>
+<dd><p>
+ The completion of the <code class="computeroutput"><span class="identifier">act</span></code>
+ happens before wait() returns.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if the function returns because <code class="computeroutput"><span class="identifier">act</span></code>
+ is ready.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ is_ready() == true.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__wait_for__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase__phrase_role__identifier__rel_time__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4822381"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__wait_for__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase__phrase_role__identifier__rel_time__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">wait_for</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span><span class="identifier">rel_time</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ blocks until the <code class="computeroutput"><span class="identifier">act</span></code>
+ completes or <code class="computeroutput"><span class="identifier">rel_time</span></code>
+ has elapsed.
+ </p></dd>
+<dt><span class="term">Synchronization:</span></dt>
+<dd><p>
+ The completion of the <code class="computeroutput"><span class="identifier">act</span></code>
+ happens before wait() returns.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if the function returns because <code class="computeroutput"><span class="identifier">act</span></code>
+ is ready.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ is_ready() == true.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ACT.models"></a><h6>
+<a name="id4822582"></a>
+ Models
+ </h6>
+<div class="itemizedlist"><ul type="disc">
+<li><code class="computeroutput"><span class="identifier">unique_future</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_future</span></code></li>
+<li><code class="computeroutput"><span class="identifier">unique_joiner</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_joiner</span></code></li>
+<li><code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code></li>
+<li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code></li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT"></a><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT" title="
+ Concept FutureBasedACT
+ ">
+ Concept <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>
+ </a>
+</h5></div></div></div>
+<p>
+ The completion of the <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>
+ is undefined at this level but occurs usually after a set_value or set_exception
+ on the associated promise.
+ </p>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.description"></a><h6>
+<a name="id4822740"></a>
+ Description
+ </h6>
+<p>
+ An <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code> is
+ a <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ that associates a value expected on the its completion.
+ </p>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.notation"></a><h6>
+<a name="id4822786"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">act</span></code></span></dt>
+<dd><p>
+ An <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">cact</span></code></span></dt>
+<dd><p>
+ An const <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">Nullary</span></code> function
+ with type F
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">abs_time</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">system_time</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">rel_time</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">DurationType</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+ A bool
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">v</span></code></span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">typeof</span><span class="special">(</span><span class="identifier">act</span><span class="special">)>::</span><span class="identifier">move_dest_type</span></code>
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression_requirements"></a><h6>
+<a name="id4823024"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression_requirements">Expression
+ requirements</a>
+ </h6>
+<p>
+ A type models an <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>
+ if, in addition to being an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>,
+ the following expressions are valid:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return type
+ </p>
+ </th>
+<th>
+ <p>
+ Runtime Complexity
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">v</span> <span class="special">=</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">typeof</span><span class="special">(</span><span class="identifier">act</span><span class="special">)>::</span><span class="identifier">move_dest_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">is_ready</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">has_exception</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">has_value</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression_semantics"></a><h6>
+<a name="id4823360"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">v</span> <span class="special">=</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Blocks until <code class="computeroutput"><span class="identifier">act</span></code>
+ contains a value and returns the stored value
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">is_ready</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Is true only if <code class="computeroutput"><span class="identifier">cact</span></code>
+ holds a value or an exception ready for retrieval.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">has_exception</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Is true only if <code class="computeroutput"><span class="identifier">cact</span></code>
+ contains an exception.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">has_value</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Is true only if <code class="computeroutput"><span class="identifier">cact</span></code>
+ contains a value
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression__code__phrase_role__identifier__v__phrase__phrase_role__special_____phrase__phrase_role__identifier__get__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4823648"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression__code__phrase_role__identifier__v__phrase__phrase_role__special_____phrase__phrase_role__identifier__get__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">v</span><span class="special">=</span><span class="identifier">get</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Retrieves the value returned by the Nullary function.
+ </p></dd>
+<dt><span class="term">Synchronization:</span></dt>
+<dd><p>
+ The completion of the <code class="computeroutput"><span class="identifier">act</span></code>
+ happens before get() returns.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ Depending on the nature of the ACT returns a <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">move_dest_type</span></code>.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ the stored exception, if an exception was stored and not retrieved
+ before.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ if <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">move_result</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>
+ it is unspecified what happens when <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code> is called a second time on the
+ same shared_joiner.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__is_ready__phrase__phrase_role__special_____phrase__phrase_role__identifier__cact__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4823883"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__is_ready__phrase__phrase_role__special_____phrase__phrase_role__identifier__cact__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">is_ready</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if <code class="computeroutput"><span class="identifier">cact</span></code>
+ holds a value or an exception ready for retrieval.
+ </p></dd>
+<dt><span class="term">Remark:</span></dt>
+<dd><p>
+ if <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">move_result</span></code> is true the return
+ value could be unspecified after a call to <code class="computeroutput"><span class="identifier">get</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>.
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__has_exception__phrase__phrase_role__special_____phrase__phrase_role__identifier__cact__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4824041"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__has_exception__phrase__phrase_role__special_____phrase__phrase_role__identifier__cact__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">has_exception</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if <code class="computeroutput"><span class="identifier">is_ready</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code> == true and <code class="computeroutput"><span class="identifier">cact</span></code>
+ contains an exception.
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__has_value__phrase__phrase_role__special_____phrase__phrase_role__identifier__cact__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4824160"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.expression__code__phrase_role__identifier__b__phrase___phrase_role__special_____phrase___phrase_role__identifier__has_value__phrase__phrase_role__special_____phrase__phrase_role__identifier__cact__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">has_value</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true only if <code class="computeroutput"><span class="identifier">is_ready</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code> == true and <code class="computeroutput"><span class="identifier">cact</span></code>
+ contains a value.
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.FutureBasedACT.models"></a><h6>
+<a name="id4824277"></a>
+ Models
+ </h6>
+<div class="itemizedlist"><ul type="disc">
+<li><code class="computeroutput"><span class="identifier">unique_future</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_future</span></code></li>
+<li><code class="computeroutput"><span class="identifier">unique_joiner</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_joiner</span></code></li>
+<li><code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code></li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT"></a><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT" title="
+ Concept ThreadBasedACT
+ ">
+ Concept <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>
+ </a>
+</h5></div></div></div>
+<p>
+ The completion of the <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code>
+ is undefined at this level but occurs usually after a function finish.
+ </p>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.description"></a><h6>
+<a name="id4824415"></a>
+ Description
+ </h6>
+<p>
+ An <code class="computeroutput"><span class="identifier">ThreadBasedACT</span></code> is
+ a <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ that provides a thread like interface.
+ </p>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.notation"></a><h6>
+<a name="id4824460"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">act</span></code></span></dt>
+<dd><p>
+ An <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">cact</span></code></span></dt>
+<dd><p>
+ A const <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">cact</span></code></span></dt>
+<dd><p>
+ An const <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">Nullary</span></code> function
+ with type F
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">abs_time</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">system_time</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">rel_time</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">DurationType</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+ A bool
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">id</span></code></span></dt>
+<dd><p>
+ An <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code><span class="special">>::</span><span class="identifier">id_type</span></code>
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression_requirements"></a><h6>
+<a name="id4824721"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression_requirements">Expression
+ requirements</a>
+ </h6>
+<p>
+ A type models an <code class="computeroutput"><span class="identifier">FutureBasedACT</span></code>
+ if, in addition to being an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>,
+ the following expressions are valid:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return type
+ </p>
+ </th>
+<th>
+ <p>
+ Runtime Complexity
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">joinable</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">join_until</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span>
+ <span class="identifier">abs_time</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span>
+ <span class="identifier">rel_time</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">detach</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">interrupt</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">interruption_requested</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">id</span> <span class="special">=</span>
+ <span class="identifier">get_id</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code><span class="special">>::</span><span class="identifier">id_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression_semantics"></a><h6>
+<a name="id4825270"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">joinable</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ true if <code class="computeroutput"><span class="identifier">cact</span></code>
+ refers to a 'thread of execution', false otherwise
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ waits for the associated 'thread of execution' to complete
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">join_until</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span>
+ <span class="identifier">abs_time</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ waits for the associated 'thread of execution' to complete or
+ the time <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ has been reach.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">act</span><span class="special">,</span>
+ <span class="identifier">rel_time</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ waits for the associated 'thread of execution' to complete or
+ the specified duration <code class="computeroutput"><span class="identifier">rel_time</span></code>
+ has elapsed
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">detach</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ the associated 'thread of execution' becomes detached, and no
+ longer has an associated one
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">interrupt</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ request that the associated 'thread of execution' be interrupted
+ the next time it enters one of the predefined interruption points
+ with interruption enabled, or if it is currently blocked in a
+ call to one of the predefined interruption points with interruption
+ enabled
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">interruption_requested</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ true if interruption has been requested for the associated 'thread
+ of execution', false otherwise.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">id</span> <span class="special">=</span>
+ <span class="identifier">get_id</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ an instance of <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code><span class="special">>::</span><span class="identifier">id_type</span></code>
+ that represents the associated 'thread of execution'.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__b__phrase__phrase_role__special_____phrase__phrase_role__identifier__joinable__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4825804"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__b__phrase__phrase_role__special_____phrase__phrase_role__identifier__joinable__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">b</span><span class="special">=</span><span class="identifier">joinable</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true if <code class="computeroutput"><span class="identifier">act</span></code> refers
+ to a 'thread of execution', false otherwise
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__join__phrase__phrase_role__special______phrase___code_"></a><h6>
+<a name="id4825916"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__join__phrase__phrase_role__special______phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Preconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">get_id</span><span class="special">(</span><span class="identifier">act</span><span class="special">)!=</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">get_current_id</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>()</span></code>
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="identifier">act</span></code> refers to
+ a thread of execution, waits for that 'thread of execution' to complete.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="identifier">act</span></code> refers to
+ a 'thread of execution' on entry, that 'thread of execution' has
+ completed. <code class="computeroutput"><span class="identifier">act</span></code> no
+ longer refers to any 'thread of execution'.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code> if the current
+ thread of execution is interrupted.
+ </p></dd>
+<dt><span class="term">Notes:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ is one of the predefined <span class="emphasis"><em>interruption points</em></span>.
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__b__phrase__phrase_role__special_____phrase__phrase_role__identifier__join_until__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special______phrase__phrase_role__identifier__b__phrase__phrase_role__special_____phrase__phrase_role__identifier__join_for__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4826171"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__b__phrase__phrase_role__special_____phrase__phrase_role__identifier__join_until__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special______phrase__phrase_role__identifier__b__phrase__phrase_role__special_____phrase__phrase_role__identifier__join_for__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">b</span><span class="special">=</span><span class="identifier">join_until</span><span class="special">(</span><span class="identifier">act</span><span class="special">)|</span><span class="identifier">b</span><span class="special">=</span><span class="identifier">join_for</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code></a>
+ </h6>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">join_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&</span> <span class="identifier">wait_until</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">join_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Preconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">get_id</span><span class="special">(</span><span class="identifier">act</span><span class="special">)!=</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">get_current_id</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>()</span></code>
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="identifier">act</span></code> refers to
+ a 'thread of execution', waits for that thread of execution to complete,
+ the time <code class="computeroutput"><span class="identifier">wait_until</span></code>
+ has been reach or the specified duration <code class="computeroutput"><span class="identifier">rel_time</span></code>
+ has elapsed. If <code class="computeroutput"><span class="identifier">act</span></code>
+ doesn't refer to a 'thread of execution', returns immediately.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">act</span></code> refers to a thread of execution
+ on entry, and that thread of execution has completed before the call
+ times out, <code class="computeroutput"><span class="keyword">false</span></code> otherwise.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="identifier">act</span></code> refers to
+ a thread of execution on entry, and <code class="computeroutput"><span class="identifier">timed_join</span></code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, that thread
+ of execution has completed, and <code class="computeroutput"><span class="identifier">act</span></code>
+ no longer refers to any thread of execution. If this call to <code class="computeroutput"><span class="identifier">timed_join</span></code> returns <code class="computeroutput"><span class="keyword">false</span></code>, <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> is unchanged.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code> if the current
+ thread of execution is interrupted.
+ </p></dd>
+<dt><span class="term">Notes:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">join_until</span><span class="special">()</span></code>
+ is one of the predefined <span class="emphasis"><em>interruption points</em></span>.
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__detach__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4826739"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__detach__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">detach</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="identifier">act</span></code> refers to
+ a 'thread of execution', that 'thread of execution' becomes detached,
+ and no longer has an associated thread object.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">act</span></code> no longer refers
+ to any 'thread of execution'.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__get_id__phrase__phrase_role__special_____phrase__phrase_role__identifier__cact__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4758264"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__get_id__phrase__phrase_role__special_____phrase__phrase_role__identifier__cact__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">get_id</span><span class="special">(</span><span class="identifier">cact</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="identifier">act</span></code> refers to
+ a 'thread of execution', an instance of <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code><span class="special">>::</span><span class="identifier">id_type</span></code>
+ that represents that <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>.
+ Otherwise returns a default-constructed <code class="computeroutput"><span class="identifier">act_traits</span><span class="special"><</span><code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code><span class="special">>::</span><span class="identifier">id_type</span></code>.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__interrupt__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4827181"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__interrupt__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">interrupt</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ If <code class="computeroutput"><span class="identifier">act</span></code> refers to
+ a 'thread of execution', request that the 'thread of execution' will
+ be interrupted the next time it enters one of the predefined <span class="emphasis"><em>interruption
+ points</em></span> with interruption enabled, or if it is currently
+ <span class="emphasis"><em>blocked</em></span> in a call to one of the predefined
+ <span class="emphasis"><em>interruption points</em></span> with interruption enabled
+ .
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__h__phrase___phrase_role__special_____phrase___phrase_role__identifier__native_handle__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_"></a><h6>
+<a name="id4827299"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.expression__code__phrase_role__identifier__h__phrase___phrase_role__special_____phrase___phrase_role__identifier__native_handle__phrase__phrase_role__special_____phrase__phrase_role__identifier__act__phrase__phrase_role__special_____phrase___code_">Expression
+ <code class="computeroutput"><span class="identifier">h</span> <span class="special">=</span>
+ <span class="identifier">native_handle</span><span class="special">(</span><span class="identifier">act</span><span class="special">)</span></code></a>
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Returns an instance of <code class="computeroutput"><span class="identifier">native_handle_type</span></code>
+ that can be used with platform-specific APIs to manipulate the underlying
+ implementation. If no such instance exists, <code class="computeroutput"><span class="identifier">native_handle</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">native_handle_type</span></code>
+ are not present.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_completion_token_concepts.ThreadBasedACT.models"></a><h6>
+<a name="id4827446"></a>
+ Models
+ </h6>
+<div class="itemizedlist"><ul type="disc">
+<li><code class="computeroutput"><span class="identifier">unique_joiner</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_joiner</span></code></li>
+<li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code></li>
+<li><code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">task</span></code></li>
+</ul></div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts"></a><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts" title="Asynchronous
+ Executors Concepts">Asynchronous
+ Executors Concepts</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_">Concept
+ <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code></a></span></dt>
+<dt><span class="section"><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_">Concept
+ <code class="computeroutput"><span class="identifier">IntrinsicAsynchronousExecutor</span></code></a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_"></a><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_" title="Concept
+ AsynchronousExecutor">Concept
+ <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code></a>
+</h5></div></div></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_.description"></a><h6>
+<a name="id4827599"></a>
+ Description
+ </h6>
+<p>
+ An <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ executes asynchronously a function and returns an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ when calling the fork function on it.
+ </p>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_.notation"></a><h6>
+<a name="id4827652"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ae</span></code></span></dt>
+<dd><p>
+ An <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">Nullary</span></code> function
+ with type F
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">act</span></code></span></dt>
+<dd><p>
+ An <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_.expression_requirements"></a><h6>
+<a name="id4827774"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_.expression_requirements">Expression
+ requirements</a>
+ </h6>
+<p>
+ A type models a <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ if, the following expressions are valid:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return type
+ </p>
+ </th>
+<th>
+ <p>
+ Runtime Complexity
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">__fork__</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span>
+ <span class="identifier">f</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get_future</span><span class="special"><</span><span class="identifier">AE</span><span class="special">>()(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ inherits from <code class="computeroutput"><span class="identifier">unique_future</span><span class="special">|</span><span class="identifier">shared_future</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">asynchronous_completion_token</span><span class="special"><</span><span class="identifier">AE</span><span class="special">,</span> <span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Model of <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ satisfying <code class="computeroutput"><span class="identifier">__act_value</span><span class="special"><</span><span class="identifier">ACT</span><span class="special">>::</span><span class="identifier">type</span></code>
+ is <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_.expression_semantics"></a><h6>
+<a name="id4828109"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">act</span> <span class="special">=</span>
+ <span class="identifier">__fork__</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span>
+ <span class="identifier">f</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ request <code class="computeroutput"><span class="identifier">ae</span></code> to
+ execute asynchronously the function <code class="computeroutput"><span class="identifier">f</span></code>and
+ returns an <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get_future</span><span class="special"><</span><span class="identifier">AE</span><span class="special">>()(</span><span class="identifier">act</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ gets a reference to a inherits from <code class="computeroutput"><span class="identifier">unique_future</span><span class="special">|</span><span class="identifier">shared_future</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_.constraints"></a><h6>
+<a name="id4828335"></a>
+ Constraints
+ </h6>
+<p>
+ The following constraints applies:
+ </p>
+<div class="itemizedlist"><ul type="disc"><li><code class="computeroutput"><span class="identifier">act_value</span><span class="special"><</span><code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">==</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()::</span><span class="identifier">type</span><span class="special">></span></code></li></ul></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__asynchronousexecutor_.models"></a><h6>
+<a name="id4828447"></a>
+ Models
+ </h6>
+<div class="itemizedlist"><ul type="disc">
+<li><code class="computeroutput"><span class="identifier">basic_threader</span></code></li>
+<li><code class="computeroutput"><span class="identifier">unique_threader</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_threader</span></code></li>
+<li><code class="computeroutput"><span class="identifier">launcher</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_launcher</span></code></li>
+<li><code class="computeroutput"><span class="identifier">scheduler</span></code></li>
+<li><code class="computeroutput"><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span></code></li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_"></a><a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_" title="Concept
+ IntrinsicAsynchronousExecutor">Concept
+ <code class="computeroutput"><span class="identifier">IntrinsicAsynchronousExecutor</span></code></a>
+</h5></div></div></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.description"></a><h6>
+<a name="id4828610"></a>
+ Description
+ </h6>
+<p>
+ The default fork implementation put some requirements in its <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code> parameter. This
+ concept is related to this. An <code class="computeroutput"><span class="identifier">IntrinsicAsynchronousExecutor</span></code>
+ is <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ that works well with the default implementation of <span class="underline">_fork</span>_.
+ </p>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.notation"></a><h6>
+<a name="id4828681"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ae</span></code></span></dt>
+<dd><p>
+ An <code class="computeroutput"><span class="identifier">IntrinsicAsynchronousExecutor</span></code>
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">Nullary</span></code> function
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.expression_requirements"></a><h6>
+<a name="id4828775"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.expression_requirements">Expression
+ requirements</a>
+ </h6>
+<p>
+ A type models an <code class="computeroutput"><span class="identifier">IntrinsicAsynchronousExecutor</span></code>
+ if, in addition to being an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>,
+ the following expressions are valid:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return type
+ </p>
+ </th>
+<th>
+ <p>
+ Runtime Complexity
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ae</span><span class="special">.</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">handle</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.meta_expressions"></a><h6>
+<a name="id4828972"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.meta_expressions">Meta
+ Expressions</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Model Of
+ </p>
+ </th>
+<th>
+ <p>
+ Compile Time Complexity
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">handle</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">()>::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.expression_semantics"></a><h6>
+<a name="id4829118"></a>
+ <a href="concepts.html#toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ae</span><span class="special">.</span><span class="identifier">fork</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ executes asynchronously the function <code class="computeroutput"><span class="identifier">f</span></code>
+ and returns a <code class="computeroutput"><span class="identifier">handle</span></code>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="toward_boost_async.reference.concepts.asynchronous_executors_concepts.concept__intrinsicasynchronousexecutor_.models"></a><h6>
+<a name="id4829249"></a>
+ Models
+ </h6>
+<div class="itemizedlist"><ul type="disc">
+<li><code class="computeroutput"><span class="identifier">basic_threader</span></code></li>
+<li><code class="computeroutput"><span class="identifier">unique_threader</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_threader</span></code></li>
+<li><code class="computeroutput"><span class="identifier">launcher</span></code></li>
+<li><code class="computeroutput"><span class="identifier">shared_launcher</span></code></li>
+<li><code class="computeroutput"><span class="identifier">scheduler</span></code></li>
+</ul></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="ae_act_framework_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/users_guide.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/users_guide.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Users'Guide</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost Async">
+<link rel="up" href="../index.html" title="Toward Boost Async">
+<link rel="prev" href="overview/motivation.html" title=" Motivation">
+<link rel="next" href="users_guide/getting_started.html" title=" Getting
+ Started">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overview/motivation.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="users_guide/getting_started.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_async.users_guide"></a> Users'Guide
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="users_guide/getting_started.html"> Getting
+ Started</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_async.users_guide.getting_started.install">
+ Installing Async</a></span></dt>
+<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_async.users_guide.getting_started.async_hello_world_">Async
+ Hello World!</a></span></dt>
+<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_async.users_guide.getting_started.multiple_algorithms">Multiple
+ algorithms</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Tutorial</span></dt>
+<dd><dl><dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_async.users_guide.tutorial.ae_act_framework">AE/ACT
+ framework</a></span></dt></dl></dd>
+<dt><span class="section"> References</span></dt>
+<dt><span class="section"> Glossary</span></dt>
+</dl></div>
+<p>
+ [/
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overview/motivation.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="users_guide/getting_started.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/bibliography.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/bibliography.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> References</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../users_guide.html" title=" Users'Guide">
+<link rel="prev" href="tutorial.html" title=" Tutorial">
+<link rel="next" href="glossary.html" title=" Glossary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="glossary.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.users_guide.bibliography"></a> References
+</h3></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1883.pdf" target="_top">N1833
+ - Preliminary Threading Library Proposal for TR2</a></span></dt>
+<dd><p>
+ </p></dd>
+<dt><span class="term"><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2185.html" target="_top">N2185
+ - Proposed Text for Parallel Task Execution</a></span></dt>
+<dd><p>
+ </p></dd>
+<dt><span class="term"><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2276.html" target="_top">N2276
+ - Thread Pools and Futures</a></span></dt>
+<dd><p>
+ </p></dd>
+<dt><span class="term"><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2802.html" target="_top">N2802:
+ A plea to reconsider detach-on-destruction for thread objects</a> </span></dt>
+<dd><p>
+ </p></dd>
+<dt><span class="term"><a href="http://www.boostpro.com/vault/index.php?action=downloadfile&filename=boost-threadpool.3.tar.gz&directory=Concurrent%20Programming&" target="_top">Boost.ThreadPool
+ (O. Kowalke)</a></span></dt>
+<dd><p>
+ </p></dd>
+<dt><span class="term"><a href="http://www.justsoftwaresolutions.co.uk/threading/free-implementation-of-c++-futures.html" target="_top">Boost.Futures
+ (A. Williams)</a></span></dt>
+<dd><p>
+ </p></dd>
+<dt><span class="term"><a href="http://www.boost.org/libs/thread" target="_top">Boost.Thread
+ (A. Williams)</a></span></dt>
+<dd><p>
+ </p></dd>
+<dt><span class="term"><a href="http://www.mr-edd.co.uk/?page_id=58" target="_top">async
+ (Edd )</a></span></dt>
+<dd><p>
+ </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="glossary.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/getting_started.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/getting_started.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,301 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Getting
+ Started</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../users_guide.html" title=" Users'Guide">
+<link rel="prev" href="../users_guide.html" title=" Users'Guide">
+<link rel="next" href="tutorial.html" title=" Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../users_guide.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.users_guide.getting_started"></a><a href="getting_started.html" title=" Getting
+ Started"> Getting
+ Started</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="getting_started.html#toward_boost_async.users_guide.getting_started.install">
+ Installing Async</a></span></dt>
+<dt><span class="section"><a href="getting_started.html#toward_boost_async.users_guide.getting_started.async_hello_world_">Async
+ Hello World!</a></span></dt>
+<dt><span class="section"><a href="getting_started.html#toward_boost_async.users_guide.getting_started.multiple_algorithms">Multiple
+ algorithms</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.users_guide.getting_started.install"></a><a href="getting_started.html#toward_boost_async.users_guide.getting_started.install" title="
+ Installing Async">
+ Installing Async</a>
+</h4></div></div></div>
+<a name="toward_boost_async.users_guide.getting_started.install.getting_boost_async"></a><h5>
+<a name="id4818933"></a>
+ <a href="getting_started.html#toward_boost_async.users_guide.getting_started.install.getting_boost_async">Getting
+ Boost.Async</a>
+ </h5>
+<p>
+ You can get the last stable release of <span class="bold"><strong>Boost.Async</strong></span>
+ by downloading <code class="literal">async.zip</code> from the <a href="http://www.boost-consulting.com/vault/index.php?directory=Concurrent%20Programming" target="_top">Boost
+ Vault</a>
+ </p>
+<p>
+ You can also access the latest (unstable?) state from the <a href="https://svn.boost.org/svn/boost/sandbox/async" target="_top">Boost
+ Sandbox</a>.
+ </p>
+<a name="toward_boost_async.users_guide.getting_started.install.building_boost_async"></a><h5>
+<a name="id4818986"></a>
+ <a href="getting_started.html#toward_boost_async.users_guide.getting_started.install.building_boost_async">Building
+ Boost.Async</a>
+ </h5>
+<p>
+ <span class="bold"><strong>Boost.Async</strong></span> is a header only library.
+ </p>
+<a name="toward_boost_async.users_guide.getting_started.install.build_requirements"></a><h5>
+<a name="id4819016"></a>
+ <a href="getting_started.html#toward_boost_async.users_guide.getting_started.install.build_requirements">Build
+ Requirements</a>
+ </h5>
+<p>
+ <span class="bold"><strong>Boost.Async</strong></span> depends on Boost. You must
+ use either Boost version 1.39.x or the version in SVN trunk. In particular,
+ <span class="bold"><strong>Boost.Async</strong></span> depends on:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Boost.Bind</span></dt>
+<dd><p>
+ for bind, ...
+ </p></dd>
+<dt><span class="term">Boost.Config</span></dt>
+<dd><p>
+ for ??? and abi_prefic_sufix, ...
+ </p></dd>
+<dt><span class="term">Boost.Fusion</span></dt>
+<dd><p>
+ for tuples, and sequence algorithms ...
+ </p></dd>
+<dt><span class="term">Boost.MPL</span></dt>
+<dd><p>
+ for transform, ...
+ </p></dd>
+<dt><span class="term">Boost.Preprocesor</span></dt>
+<dd><p>
+ to simulate variadic templates , ...
+ </p></dd>
+<dt><span class="term">Boost.SmartPtr</span></dt>
+<dd><p>
+ for shared_ptr, ...
+ </p></dd>
+<dt><span class="term">Boost.Threads</span></dt>
+<dd><p>
+ for thread, mutex, condition_variable, ...
+ </p></dd>
+<dt><span class="term">Boost.TypeTrais</span></dt>
+<dd><p>
+ for is_void, remove_references, ...
+ </p></dd>
+<dt><span class="term">Boost.TypeOf</span></dt>
+<dd><p>
+ to register the ACT types.
+ </p></dd>
+<dt><span class="term">Boost.Utility</span></dt>
+<dd><p>
+ for result_of, enable_if...
+ </p></dd>
+</dl>
+</div>
+<p>
+ In addition it depends on the following libraries that are not yet accepted
+ on Boost
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Boost.Futures</span></dt>
+<dd><p>
+ for futures
+ </p></dd>
+<dt><span class="term">Boost.ThreadPool</span></dt>
+<dd><p>
+ Only when using the <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ boost::tp::pool and the <code class="computeroutput"><span class="identifier">AsynchronousCompletionToken</span></code>
+ boost::tp::task
+ </p></dd>
+</dl>
+</div>
+<p>
+ And also will depend on a near future, conditionally, on the following
+ libraries that are even not submitted to Boost.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Boost.Chrono</span></dt>
+<dd><p>
+ for time and duration
+ </p></dd>
+<dt><span class="term">Boost.Move</span></dt>
+<dd><p>
+ to emulate the move semantic.
+ </p></dd>
+<dt><span class="term">Boost.SmartPtr.UniquePtr</span></dt>
+<dd><p>
+ for unique_ptr, ...
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_async.users_guide.getting_started.install.exceptions_safety"></a><h5>
+<a name="id4819392"></a>
+ <a href="getting_started.html#toward_boost_async.users_guide.getting_started.install.exceptions_safety">Exceptions
+ safety</a>
+ </h5>
+<p>
+ All functions in the library are exception-neutral and provide strong guarantee
+ of exception safety as long as the underlying parameters provide it.
+ </p>
+<a name="toward_boost_async.users_guide.getting_started.install.thread_safety"></a><h5>
+<a name="id4819419"></a>
+ <a href="getting_started.html#toward_boost_async.users_guide.getting_started.install.thread_safety">Thread
+ safety</a>
+ </h5>
+<p>
+ All functions in the library are thread-unsafe except when noted explicitly.
+ </p>
+<a name="toward_boost_async.users_guide.getting_started.install.tested_compilers"></a><h5>
+<a name="id4819444"></a>
+ <a href="getting_started.html#toward_boost_async.users_guide.getting_started.install.tested_compilers">Tested
+ compilers</a>
+ </h5>
+<p>
+ Currently, <span class="bold"><strong>Boost.Async</strong></span> has been tested
+ in the following compilers/platforms:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ GCC 3.4.4 Cygwin
+ </li>
+<li>
+ GCC 3.4.6 Linux
+ </li>
+<li>
+ GCC 4.1.2 Linux
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Please send any questions, comments and bug reports to boost <at>
+ lists <dot> boost <dot> org.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.users_guide.getting_started.async_hello_world_"></a><a href="getting_started.html#toward_boost_async.users_guide.getting_started.async_hello_world_" title="Async
+ Hello World!">Async
+ Hello World!</a>
+</h4></div></div></div>
+<p>
+ This is a little bit more than a Hello World! example. It will also say
+ Bye, Bye!
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">basic_threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">namespace</span> <span class="identifier">basync</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">;</span>
+
+<span class="keyword">void</span> <span class="identifier">my_thread</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Hello World!"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">::</span><span class="identifier">basic_threader</span> <span class="identifier">ae</span><span class="special">;</span>
+ <span class="identifier">basync</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">my_thread</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<pre class="programlisting">Hello World!
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.users_guide.getting_started.multiple_algorithms"></a><a href="getting_started.html#toward_boost_async.users_guide.getting_started.multiple_algorithms" title="Multiple
+ algorithms">Multiple
+ algorithms</a>
+</h4></div></div></div>
+<p>
+ This example shows how to launch several algorithms and wait only for the
+ more efficient.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">threader</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">async</span><span class="special">/</span><span class="identifier">wait_for_any</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">namespace</span> <span class="identifier">basync</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">async</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">my_thread1</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">sleep</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"1 thread_id="</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">my_thread2</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">sleep</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"2 thread_id="</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">my_thread3</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">sleep</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"3 thread_id="</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">basync</span><span class="special">::</span><span class="identifier">shared_threader</span> <span class="identifier">ae</span><span class="special">;</span>
+ <span class="identifier">BOOST_AUTO</span><span class="special">(</span><span class="identifier">res</span><span class="special">,</span><span class="identifier">basync</span><span class="special">::</span><span class="identifier">wait_for_any</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">my_thread1</span><span class="special">,</span> <span class="identifier">my_thread2</span><span class="special">,</span> <span class="identifier">my_thread3</span><span class="special">));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Algotithm "</span> <span class="special"><<</span> <span class="identifier">result</span><span class="special">.</span><span class="identifier">first</span><span class="special">+</span><span class="number">1</span> <span class="special"><<</span> <span class="string">" finished the first. result="</span> <span class="special"><<</span> <span class="identifier">result</span><span class="special">.</span><span class="identifier">second</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This results on the following output
+ </p>
+<pre class="programlisting">3 thread_id=0x9c03f8
+2 thread_id=0x9c0850
+1 thread_id=0x9d0c40
+Algotithm 2 finished the first. result=0
+
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../users_guide.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/glosary.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/glosary.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Glossary</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="bibliography.html" title="References">
+<link rel="next" href="../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bibliography.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.users_guide.glosary"></a><a class="link" href="glosary.html" title="Glossary"> Glossary</a>
+</h3></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">AE</span></dt>
+<dd><p>
+ Asynchronous executor
+ </p></dd>
+<dt><span class="term">ACT</span></dt>
+<dd><p>
+ Asynchronous completion token
+ </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bibliography.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/glossary.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/glossary.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Glossary</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../users_guide.html" title=" Users'Guide">
+<link rel="prev" href="bibliography.html" title=" References">
+<link rel="next" href="../reference.html" title=" Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bibliography.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.users_guide.glossary"></a> Glossary
+</h3></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">AE</span></dt>
+<dd><p>
+ Asynchronous executor
+ </p></dd>
+<dt><span class="term">ACT</span></dt>
+<dd><p>
+ Asynchronous completion token
+ </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bibliography.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/tutorial.html
==============================================================================
--- (empty file)
+++ sandbox/async/libs/async/doc/html/toward_boost_async/users_guide/tutorial.html 2009-10-13 02:51:21 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Tutorial</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost Async">
+<link rel="up" href="../users_guide.html" title=" Users'Guide">
+<link rel="prev" href="getting_started.html" title=" Getting
+ Started">
+<link rel="next" href="bibliography.html" title=" References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="getting_started.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_async.users_guide.tutorial"></a> Tutorial
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="tutorial.html#toward_boost_async.users_guide.tutorial.ae_act_framework">AE/ACT
+ framework</a></span></dt></dl></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_async.users_guide.tutorial.ae_act_framework"></a><a href="tutorial.html#toward_boost_async.users_guide.tutorial.ae_act_framework" title="AE/ACT
+ framework">AE/ACT
+ framework</a>
+</h4></div></div></div></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Vicente J. Botet Escriba<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="getting_started.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk