Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56906 - in sandbox/interthreads: . libs/interthreads/build libs/interthreads/doc libs/interthreads/doc/html libs/interthreads/doc/html/toward_boost_interthreads libs/interthreads/doc/html/toward_boost_interthreads/appendices libs/interthreads/doc/html/toward_boost_interthreads/examples libs/interthreads/doc/html/toward_boost_interthreads/reference libs/interthreads/doc/html/toward_boost_interthreads/users_guide libs/interthreads/test
From: vicente.botet_at_[hidden]
Date: 2009-10-16 04:38:43


Author: viboes
Date: 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
New Revision: 56906
URL: http://svn.boost.org/trac/boost/changeset/56906

Log:
TBoost.Interthreads:
* Review version
Added:
   sandbox/interthreads/boost.png (contents, props changed)
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/keep_alive_file_hpp.html (contents, props changed)
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/set_once_hpp.html (contents, props changed)
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decoration_hpp.html (contents, props changed)
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decorator_hpp.html (contents, props changed)
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_group_once_hpp.html (contents, props changed)
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html (contents, props changed)
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_hpp.html (contents, props changed)
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_once_hpp.html (contents, props changed)
Text files modified:
   sandbox/interthreads/libs/interthreads/build/Jamfile.v2 | 7
   sandbox/interthreads/libs/interthreads/doc/case_studies.qbk | 2
   sandbox/interthreads/libs/interthreads/doc/html/index.html | 29
   sandbox/interthreads/libs/interthreads/doc/html/standalone_HTML.manifest | 11
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices.html | 7
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/changes.html | 4
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/rationale.html | 8
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/todo.html | 18
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples.html | 18
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples/thread_safe_deferred_traces.html | 6
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview.html | 2
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference.html | 74 +
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/concepts.html | 8
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide.html | 12
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/getting_started.html | 4
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/tutorial.html | 1115 ++++++++++++++++++++-------------------
   sandbox/interthreads/libs/interthreads/doc/reference.qbk | 8
   sandbox/interthreads/libs/interthreads/doc/tutorial.qbk | 10
   sandbox/interthreads/libs/interthreads/test/Jamfile.v2 | 7
   19 files changed, 723 insertions(+), 627 deletions(-)

Added: sandbox/interthreads/boost.png
==============================================================================
Binary file. No diff available.

Modified: sandbox/interthreads/libs/interthreads/build/Jamfile.v2
==============================================================================
--- sandbox/interthreads/libs/interthreads/build/Jamfile.v2 (original)
+++ sandbox/interthreads/libs/interthreads/build/Jamfile.v2 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -36,6 +36,10 @@
 import indirect ;
 import path ;
 
+if ! $(BOOST_ROOT)
+{
+ BOOST_ROOT = [ modules.peek : BOOST_ROOT ] ;
+}
 project boost/interthreads
     : source-location ../src
     : requirements
@@ -46,7 +50,8 @@
 # <define>BOOST_THREAD_HAS_THREAD_ATTR
     
       <include>../../..
- <include>$BOOST_ROOT
+ <include>/boost_1_39_0
+ #<include>$BOOST_ROOT
       <link>static:<define>BOOST_INTERTHREADS_BUILD_LIB=1
       <link>shared:<define>BOOST_INTERTHREADS_BUILD_DLL=1
 # <link>shared:<library>/boost/thread//boost_thread/<link>shared

Modified: sandbox/interthreads/libs/interthreads/doc/case_studies.qbk
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/case_studies.qbk (original)
+++ sandbox/interthreads/libs/interthreads/doc/case_studies.qbk 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -286,6 +286,7 @@
 
 [endsect]
 
+[/
 [/========================]
 [section:stm STM]
 [/========================]
@@ -566,4 +567,5 @@
 
 [endsect]
 
+]/
 [endsect]

Modified: sandbox/interthreads/libs/interthreads/doc/html/index.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/index.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/index.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -53,17 +53,26 @@
 <dt><span class="section"> Reference</span></dt>
 <dd><dl>
 <dt><span class="section">Concepts</span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/reference/thread_extensions_reference.html">Thread
- Extensions Reference</a></span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/reference/thread_array_reference.html">Thread
- Array Reference</a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference/thread_decoration_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_decoration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference/thread_decorator_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_decorator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference/keep_alive_file_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_keep_alive</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference/set_once_hpp.html"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">set_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference/thread_tuple_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference/thread_tuple_once_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_tuple_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference/thread_group_once_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_group_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
 </dl></dd>
 <dt><span class="section">Examples</span></dt>
-<dd><dl>
-<dt><span class="section"><a href="toward_boost_interthreads/examples/thread_safe_deferred_traces.html">Thread
- safe deferred traces</a></span></dt>
-<dt><span class="section"> STM</span></dt>
-</dl></dd>
+<dd><dl><dt><span class="section"><a href="toward_boost_interthreads/examples/thread_safe_deferred_traces.html">Thread
+ safe deferred traces</a></span></dt></dl></dd>
 <dt><span class="section">Appendices</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="toward_boost_interthreads/appendices/changes.html"> Appendix
@@ -97,7 +106,7 @@
   </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:58:26 GMT</small></p></td>
+<td align="left"><p><small>Last revised: October 16, 2009 at 08:11:02 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: sandbox/interthreads/libs/interthreads/doc/html/standalone_HTML.manifest
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/standalone_HTML.manifest (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/standalone_HTML.manifest 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -8,11 +8,16 @@
 toward_boost_interthreads/users_guide/glosary.html
 toward_boost_interthreads/reference.html
 toward_boost_interthreads/reference/concepts.html
-toward_boost_interthreads/reference/thread_extensions_reference.html
-toward_boost_interthreads/reference/thread_array_reference.html
+toward_boost_interthreads/reference/thread_decoration_hpp.html
+toward_boost_interthreads/reference/thread_decorator_hpp.html
+toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html
+toward_boost_interthreads/reference/keep_alive_file_hpp.html
+toward_boost_interthreads/reference/set_once_hpp.html
+toward_boost_interthreads/reference/thread_tuple_hpp.html
+toward_boost_interthreads/reference/thread_tuple_once_hpp.html
+toward_boost_interthreads/reference/thread_group_once_hpp.html
 toward_boost_interthreads/examples.html
 toward_boost_interthreads/examples/thread_safe_deferred_traces.html
-toward_boost_interthreads/examples/stm.html
 toward_boost_interthreads/appendices.html
 toward_boost_interthreads/appendices/changes.html
 toward_boost_interthreads/appendices/rationale.html

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -6,7 +6,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
 <link rel="start" href="../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="prev" href="examples/stm.html" title=" STM">
+<link rel="prev" href="examples/thread_safe_deferred_traces.html" title="Thread
+ safe deferred traces">
 <link rel="next" href="appendices/changes.html" title=" Appendix
       A: History">
 </head>
@@ -21,7 +22,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="examples/stm.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>
+<a accesskey="p" href="examples/thread_safe_deferred_traces.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">
@@ -91,7 +92,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="examples/stm.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>
+<a accesskey="p" href="examples/thread_safe_deferred_traces.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>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/changes.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/changes.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/changes.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -136,11 +136,11 @@
 <a name="toward_boost_interthreads.appendices.changes.__bugs_"></a>Bugs
 </h4></div></div></div>
 <a name="toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__open_bugs___emphasis_"></a><h5>
-<a name="id4854878"></a>
+<a name="id4849833"></a>
           <a href="changes.html#toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__open_bugs___emphasis_"><span class="bold"><strong>Open Bugs:</strong></span></a>
         </h5>
 <a name="toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__fixed_bugs___emphasis_"></a><h5>
-<a name="id4854907"></a>
+<a name="id4849861"></a>
           <a href="changes.html#toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__fixed_bugs___emphasis_"><span class="bold"><strong>Fixed Bugs:</strong></span></a>
         </h5>
 <p>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/rationale.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/rationale.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/rationale.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -135,12 +135,12 @@
 </dl>
 </div>
 <a name="toward_boost_interthreads.appendices.rationale.thread_specific_storage.comparaing_tsss_and_tss"></a><h5>
-<a name="id4855813"></a>
+<a name="id4850767"></a>
           <a href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_specific_storage.comparaing_tsss_and_tss">Comparaing
           TSSS and TSS</a>
         </h5>
 <div class="table">
-<a name="id4855829"></a><p class="title"><b>Table 1. Comparaing TSSS and TSS</b></p>
+<a name="id4850783"></a><p class="title"><b>Table 1. Comparaing TSSS and TSS</b></p>
 <table class="table" summary="Comparaing TSSS and TSS">
 <colgroup>
 <col>
@@ -651,12 +651,12 @@
 </dl>
 </div>
 <a name="toward_boost_interthreads.appendices.rationale.thread_tuple.comparaing_thread__thread_group_and_thread_tuple"></a><h5>
-<a name="id4857229"></a>
+<a name="id4852183"></a>
           <a href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_tuple.comparaing_thread__thread_group_and_thread_tuple">Comparaing
           thread, thread_group and thread_tuple</a>
         </h5>
 <div class="table">
-<a name="id4857246"></a><p class="title"><b>Table 2. Comparaing thread, thread_group and thread_tuple</b></p>
+<a name="id4852200"></a><p class="title"><b>Table 2. Comparaing thread, thread_group and thread_tuple</b></p>
 <table class="table" summary="Comparaing thread, thread_group and thread_tuple">
 <colgroup>
 <col>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/todo.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/todo.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/todo.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -42,7 +42,7 @@
         to do before review</a>
 </h4></div></div></div>
 <a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.complete_the_tests"></a><h5>
-<a name="id4858992"></a>
+<a name="id4853945"></a>
           <a href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.complete_the_tests">Complete
           the tests</a>
         </h5>
@@ -68,7 +68,7 @@
           </li>
 </ul></div>
 <a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.add_more_examples"></a><h5>
-<a name="id4859047"></a>
+<a name="id4854001"></a>
           <a href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.add_more_examples">Add
           more examples</a>
         </h5>
@@ -81,7 +81,7 @@
           </li>
 </ul></div>
 <a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.change_the_rational_and_implementation_sections"></a><h5>
-<a name="id4859085"></a>
+<a name="id4854038"></a>
           <a href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.change_the_rational_and_implementation_sections">Change
           the rational and implementation sections</a>
         </h5>
@@ -93,25 +93,25 @@
         later releases</a>
 </h4></div></div></div>
 <a name="toward_boost_interthreads.appendices.todo.for_later_releases.add_c__0x_move_semantics_on_compilers_supporting_it_and_use_the_boost_move_emulation_otherwise"></a><h5>
-<a name="id4859127"></a>
+<a name="id4854080"></a>
           <a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases.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>
 <a name="toward_boost_interthreads.appendices.todo.for_later_releases.use_c__0x_variadic_templates_on_compilers_supporting_it_and_use_the_preprocesor_otherwise"></a><h5>
-<a name="id4859157"></a>
+<a name="id4854110"></a>
           <a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases.use_c__0x_variadic_templates_on_compilers_supporting_it_and_use_the_preprocesor_otherwise">Use
           C++0x variadic templates on compilers supporting it and use the preprocesor
           otherwise</a>
         </h5>
 <a name="toward_boost_interthreads.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="id4859188"></a>
+<a name="id4854140"></a>
           <a href="todo.html#toward_boost_interthreads.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>
 <a name="toward_boost_interthreads.appendices.todo.for_later_releases.add_a_daemon_controlling_all_the_keep_alive_controller_threads"></a><h5>
-<a name="id4859219"></a>
+<a name="id4854171"></a>
           <a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases.add_a_daemon_controlling_all_the_keep_alive_controller_threads">Add
           a daemon controlling all the keep alive controller threads</a>
         </h5>
@@ -120,12 +120,12 @@
           when dead.
         </p>
 <a name="toward_boost_interthreads.appendices.todo.for_later_releases.optimize_the_tsss_maps_using_intrusive_containers"></a><h5>
-<a name="id4859257"></a>
+<a name="id4854208"></a>
           <a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases.optimize_the_tsss_maps_using_intrusive_containers">Optimize
           the TSSS maps using intrusive containers</a>
         </h5>
 <a name="toward_boost_interthreads.appendices.todo.for_later_releases.generalize_both_specific_pointers_in_a_template_class_basic_thread_specific_ptr"></a><h5>
-<a name="id4859280"></a>
+<a name="id4854230"></a>
           <a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases.generalize_both_specific_pointers_in_a_template_class_basic_thread_specific_ptr">Generalize
           both specific pointers in a template class basic_thread_specific_ptr</a>
         </h5>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -6,8 +6,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
 <link rel="start" href="../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="prev" href="reference/thread_array_reference.html" title="Thread
- Array Reference">
+<link rel="prev" href="reference/thread_group_once_hpp.html" title="
+ Header &lt;boost/interthreads/thread_group_once.hpp&gt;">
 <link rel="next" href="examples/thread_safe_deferred_traces.html" title="Thread
       safe deferred traces">
 </head>
@@ -22,20 +22,20 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="reference/thread_array_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/thread_safe_deferred_traces.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reference/thread_group_once_hpp.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/thread_safe_deferred_traces.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_interthreads.examples"></a>Examples
 </h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="examples/thread_safe_deferred_traces.html">Thread
- safe deferred traces</a></span></dt>
-<dt><span class="section"> STM</span></dt>
-</dl></div>
+<div class="toc"><dl><dt><span class="section"><a href="examples/thread_safe_deferred_traces.html">Thread
+ safe deferred traces</a></span></dt></dl></div>
 <p>
       This section do includes complete examples using the library.
     </p>
+<p>
+ /
+ </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
@@ -47,7 +47,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="reference/thread_array_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/thread_safe_deferred_traces.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reference/thread_group_once_hpp.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/thread_safe_deferred_traces.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples/thread_safe_deferred_traces.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples/thread_safe_deferred_traces.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples/thread_safe_deferred_traces.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -8,7 +8,7 @@
 <link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../examples.html" title="Examples">
 <link rel="prev" href="../examples.html" title="Examples">
-<link rel="next" href="stm.html" title=" STM">
+<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>
@@ -21,7 +21,7 @@
 </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="stm.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<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="../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">
@@ -331,7 +331,7 @@
 </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="stm.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<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="../appendices.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -105,7 +105,7 @@
       </p></td></tr>
 </table></div>
 <a name="toward_boost_interthreads.overview.how_to_use_this_documentation"></a><h3>
-<a name="id4764766"></a>
+<a name="id4764765"></a>
       <a href="overview.html#toward_boost_interthreads.overview.how_to_use_this_documentation">How
       to Use This Documentation</a>
     </h3>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -29,29 +29,63 @@
 <div class="toc"><dl>
 <dt><span class="section">Concepts</span></dt>
 <dd><dl><dt><span class="section">Decorator</span></dt></dl></dd>
-<dt><span class="section"><a href="reference/thread_extensions_reference.html">Thread
- Extensions Reference</a></span></dt>
+<dt><span class="section"><a href="reference/thread_decoration_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_decoration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration">
+ Class <code class="computeroutput"><span class="identifier">thread_decoration</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/thread_decorator_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_decorator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="reference/thread_extensions_reference.html#toward_boost_interthreads.reference.thread_extensions_reference.thread_decoration_hpp">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_decoration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/thread_extensions_reference.html#toward_boost_interthreads.reference.thread_extensions_reference.thread_decorator_hpp">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_decorator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/thread_extensions_reference.html#toward_boost_interthreads.reference.thread_extensions_reference.thread_specific_shared_ptr_hpp">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/thread_extensions_reference.html#toward_boost_interthreads.reference.thread_extensions_reference.keep_alive_file_hpp">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_keep_alive</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator">
+ Class <code class="computeroutput"><span class="identifier">thread_decorator</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.decorate">
+ Non Member Function <code class="computeroutput"><span class="identifier">decorate</span><span class="special">()</span></code></a></span></dt>
 </dl></dd>
-<dt><span class="section"><a href="reference/thread_array_reference.html">Thread
- Array Reference</a></span></dt>
+<dt><span class="section"><a href="reference/thread_specific_shared_ptr_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr">
+ Template Class <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/keep_alive_file_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_keep_alive</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="reference/thread_array_reference.html#toward_boost_interthreads.reference.thread_array_reference.set_once_hpp">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">set_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/thread_array_reference.html#toward_boost_interthreads.reference.thread_array_reference.thread_tuple_hpp">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/thread_array_reference.html#toward_boost_interthreads.reference.thread_array_reference.thread_tuple_once_hpp">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_tuple_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/thread_array_reference.html#toward_boost_interthreads.reference.thread_array_reference.thread_group_once_hpp">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_group_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive">
+ class <code class="computeroutput"><span class="identifier">enable_keep_alive</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive">
+ class <code class="computeroutput"><span class="identifier">disable_keep_alive</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_check_point">
+ Non Member Function <code class="computeroutput"><span class="identifier">keep_alive_check_point</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_enabled">
+ Non Member Function <code class="computeroutput"><span class="identifier">keep_alive_enabled</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_set_on_dead_thread">
+ Non Member Function <code class="computeroutput"><span class="identifier">set_on_dead_thread</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/set_once_hpp.html"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">set_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/set_once_hpp.html#toward_boost_interthreads.reference.set_once_hpp.set_onceclass">
+ Template Class <code class="computeroutput"><span class="identifier">set_once</span><span class="special">&lt;&gt;</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/thread_tuple_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class">
+ Template Class <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_make_thread_tuple">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_tuple</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/thread_tuple_once_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_tuple_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class">
+ Template Class <code class="computeroutput"><span class="identifier">thread_tuple_once</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_make_thread_tuple_once">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_tuple_once</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/thread_group_once_hpp.html">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_group_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class">
+ Template Class <code class="computeroutput"><span class="identifier">thread_group_once</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_make_thread_group_once">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_group_once</span><span class="special">()</span></code></a></span></dt>
 </dl></dd>
 </dl></div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/concepts.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/concepts.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/concepts.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -7,8 +7,8 @@
 <link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../reference.html" title=" Reference">
 <link rel="prev" href="../reference.html" title=" Reference">
-<link rel="next" href="thread_extensions_reference.html" title="Thread
- Extensions Reference">
+<link rel="next" href="thread_decoration_hpp.html" title="
+ Header &lt;boost/interthreads/thread_decoration.hpp&gt;">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -21,7 +21,7 @@
 </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="thread_extensions_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<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="thread_decoration_hpp.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">
@@ -42,7 +42,7 @@
 </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="thread_extensions_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<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="thread_decoration_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Added: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/keep_alive_file_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/keep_alive_file_hpp.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -0,0 +1,300 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Header &lt;boost/interthreads/thread_keep_alive.hpp&gt;</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.InterThreads">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="thread_specific_shared_ptr_hpp.html" title="
+ Header &lt;boost/interthreads/thread_specific_shared_ptr.hpp&gt;">
+<link rel="next" href="set_once_hpp.html" title=" Header
+ &lt;boost/interthreads/set_once.hpp&gt;">
+</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="thread_specific_shared_ptr_hpp.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="set_once_hpp.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_interthreads.reference.keep_alive_file_hpp"></a><a href="keep_alive_file_hpp.html" title="
+ Header &lt;boost/interthreads/thread_keep_alive.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_keep_alive</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive">
+ class <code class="computeroutput"><span class="identifier">enable_keep_alive</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Destructor">
+ Destructor</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive">
+ class <code class="computeroutput"><span class="identifier">disable_keep_alive</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Destructor">
+ Destructor</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_check_point">
+ Non Member Function <code class="computeroutput"><span class="identifier">keep_alive_check_point</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_enabled">
+ Non Member Function <code class="computeroutput"><span class="identifier">keep_alive_enabled</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_set_on_dead_thread">
+ Non Member Function <code class="computeroutput"><span class="identifier">set_on_dead_thread</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+ Includes the keep alive enabling/disabling classes and non member functions.
+ </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">interthreads</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">this_thread</span> <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">enable_keep_alive</span><span class="special">;</span>
+ <span class="keyword">class</span> <span class="identifier">disable_keep_alive</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="identifier">keep_alive_check_point</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">keep_alive_enabled</span><span class="special">();</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="special">(*</span><span class="identifier">on_dead_thread_type</span><span class="special">)(</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">set_on_dead_thread</span><span class="special">(</span><span class="identifier">on_dead_thread_type</span> <span class="identifier">fct</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><h4 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive" title="
+ class enable_keep_alive">
+ class <code class="computeroutput"><span class="identifier">enable_keep_alive</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Destructor">
+ Destructor</a></span></dt>
+</dl></div>
+<p>
+ Keep alive enabler.
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">enable_keep_alive</span> <span class="special">:</span> <span class="keyword">private</span> <span class="identifier">noncopyable</span><span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">enable_keep_alive</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">threshold</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">size_t</span> <span class="identifier">tap</span><span class="special">=</span><span class="number">1</span><span class="special">);</span>
+ <span class="special">~</span><span class="identifier">enable_keep_alive</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_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Constructor"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Constructor" title="
+ Constructor">
+ Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">enable_keep_alive</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">threshold</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">size_t</span> <span class="identifier">tap</span><span class="special">=</span><span class="number">1</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>
+ Enable the keep alive mechanism on this 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><h5 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Destructor"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Destructor" title="
+ Destructor">
+ Destructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">enable_keep_alive</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>
+ Restore the keep alive mechanism as it was before the constructor.
+ </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><h4 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive" title="
+ class disable_keep_alive">
+ class <code class="computeroutput"><span class="identifier">disable_keep_alive</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Destructor">
+ Destructor</a></span></dt>
+</dl></div>
+<p>
+ Keep alive disabler.
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">disable_keep_alive</span> <span class="keyword">private</span> <span class="identifier">noncopyable</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">disable_keep_alive</span><span class="special">();</span>
+ <span class="special">~</span><span class="identifier">disable_keep_alive</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_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Constructor"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Constructor" title="
+ Constructor">
+ Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">disable_keep_alive</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>
+ Disable the keep alive mechanism on this 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><h5 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Destructor"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Destructor" title="
+ Destructor">
+ Destructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">disable_keep_alive</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>
+ Restore the keep alive mechanism as it was before the constructor.
+ </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><h4 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_check_point"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_check_point" title="
+ Non Member Function keep_alive_check_point()">
+ Non Member Function <code class="computeroutput"><span class="identifier">keep_alive_check_point</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<p>
+ Keep alive check point.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">keep_alive_check_point</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>
+ States that the current thread is alive.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ The thread is alive.
+ </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><h4 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_enabled"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_enabled" title="
+ Non Member Function keep_alive_enabled()">
+ Non Member Function <code class="computeroutput"><span class="identifier">keep_alive_enabled</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<p>
+ Keep alive query.
+ </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">keep_alive_enabled</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>
+ States if the keep alive mechanism is enabled on this thread.
+ </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><h4 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_set_on_dead_thread"></a><a href="keep_alive_file_hpp.html#toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_set_on_dead_thread" title="
+ Non Member Function set_on_dead_thread()">
+ Non Member Function <code class="computeroutput"><span class="identifier">set_on_dead_thread</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<p>
+ Keep alive on dead thread action setting.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">set_on_dead_thread</span><span class="special">(</span><span class="identifier">on_dead_thread_type</span> <span class="identifier">fct</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>
+ Modifies the action to be done when a this thread is declared dead.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+</dl>
+</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="thread_specific_shared_ptr_hpp.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="set_once_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/set_once_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/set_once_hpp.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Header
+ &lt;boost/interthreads/set_once.hpp&gt;</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.InterThreads">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="keep_alive_file_hpp.html" title="
+ Header &lt;boost/interthreads/thread_keep_alive.hpp&gt;">
+<link rel="next" href="thread_tuple_hpp.html" title="
+ Header &lt;boost/interthreads/thread_tuple.hpp&gt;">
+</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="keep_alive_file_hpp.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="thread_tuple_hpp.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_interthreads.reference.set_once_hpp"></a><a href="set_once_hpp.html" title=" Header
+ &lt;boost/interthreads/set_once.hpp&gt;"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">set_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="set_once_hpp.html#toward_boost_interthreads.reference.set_once_hpp.set_onceclass">
+ Template Class <code class="computeroutput"><span class="identifier">set_once</span><span class="special">&lt;&gt;</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">interthreads</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">set_once</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.set_once_hpp.set_onceclass"></a><a href="set_once_hpp.html#toward_boost_interthreads.reference.set_once_hpp.set_onceclass" title="
+ Template Class set_once&lt;&gt;">
+ Template Class <code class="computeroutput"><span class="identifier">set_once</span><span class="special">&lt;&gt;</span></code></a>
+</h4></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">set_once</span><span class="special">&lt;&gt;</span></code>
+ is a synchonizer that allows to set a variable only once, notifying to
+ the variable value to whatever is waiting for that.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">set_once</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="identifier">set_once</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">&amp;</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="identifier">wait_for</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">TimeDuration</span><span class="special">&amp;</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+ <span class="identifier">value_type</span> <span class="identifier">get</span><span class="special">();</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">value_type</span><span class="special">&gt;</span> <span class="identifier">get_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">abs_time</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">value_type</span><span class="special">&gt;</span> <span class="identifier">get_for</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">TimeDuration</span><span class="special">&amp;</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+ <span class="keyword">bool</span> <span class="identifier">set_if_unassigned</span><span class="special">(</span><span class="identifier">value_type</span> <span class="identifier">id</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">decorator</span><span class="special">(</span><span class="identifier">this_type</span><span class="special">&amp;</span> <span class="identifier">once</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fct</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span>
+ <span class="keyword">static</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">&lt;</span><span class="identifier">thread</span><span class="special">&gt;</span> <span class="identifier">make_thread</span><span class="special">(</span><span class="identifier">this_type</span><span class="special">&amp;</span> <span class="identifier">once</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">fct</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="keep_alive_file_hpp.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="thread_tuple_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decoration_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decoration_hpp.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -0,0 +1,194 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Header &lt;boost/interthreads/thread_decoration.hpp&gt;</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.InterThreads">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="concepts.html" title="Concepts">
+<link rel="next" href="thread_decorator_hpp.html" title="
+ Header &lt;boost/interthreads/thread_decorator.hpp&gt;">
+</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="thread_decorator_hpp.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_interthreads.reference.thread_decoration_hpp"></a><a href="thread_decoration_hpp.html" title="
+ Header &lt;boost/interthreads/thread_decoration.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_decoration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration">
+ Class <code class="computeroutput"><span class="identifier">thread_decoration</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.thread_decoration_class_constructor_setup">
+ Constructor with setup</a></span></dt>
+<dt><span class="section"><a href="thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.constructor_with_setup___cleanup">Constructor
+ with setup &amp; cleanup</a></span></dt>
+</dl></dd>
+</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">interthreads</span> <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">thread_decoration</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration"></a><a href="thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration" title="
+ Class thread_decoration">
+ Class <code class="computeroutput"><span class="identifier">thread_decoration</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.thread_decoration_class_constructor_setup">
+ Constructor with setup</a></span></dt>
+<dt><span class="section"><a href="thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.constructor_with_setup___cleanup">Constructor
+ with setup &amp; cleanup</a></span></dt>
+</dl></div>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_decoration</span></code> defines
+ a couple of setup/cleanup functions chained to the last constructed decoration,
+ i.e. decorations are chained between them.
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">thread_decoration</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Callable1</span><span class="special">&gt;</span>
+ <span class="identifier">thread_decoration</span><span class="special">(</span><span class="identifier">Callable1</span> <span class="identifier">setup</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Callable1</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">Callable2</span><span class="special">&gt;</span>
+ <span class="identifier">thread_decoration</span><span class="special">(</span><span class="identifier">Callable1</span> <span class="identifier">setup</span><span class="special">,</span> <span class="identifier">Callable2</span> <span class="identifier">cleanup</span><span class="special">);</span>
+
+ <span class="special">~</span><span class="identifier">thread_decoration</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_interthreads.reference.thread_decoration_hpp.thread_decoration.thread_decoration_class_constructor_setup"></a><a href="thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.thread_decoration_class_constructor_setup" title="
+ Constructor with setup">
+ Constructor with setup</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Callable</span><span class="special">&gt;</span>
+<span class="identifier">thread_decoration</span><span class="special">(</span><span class="identifier">Callable</span> <span class="identifier">func</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Requires:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">Callable</span></code> is <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>. Copying <code class="computeroutput"><span class="identifier">setup</span></code> shall have no side effects,
+ and the effect of calling the copy shall be equivalent to calling
+ the original.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">setup</span></code> is copied into
+ storage managed internally by the library, and that copy is invoked
+ by the <code class="computeroutput"><span class="identifier">decorate</span><span class="special">()</span></code>
+ function.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a decoration.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</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>
+ The library do not ensures any order of decorations.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.constructor_with_setup___cleanup"></a><a href="thread_decoration_hpp.html#toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.constructor_with_setup___cleanup" title="Constructor
+ with setup &amp; cleanup">Constructor
+ with setup &amp; cleanup</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Callable1</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">Callable2</span><span class="special">&gt;</span>
+<span class="identifier">thread_decoration</span><span class="special">(</span><span class="identifier">Callable1</span> <span class="identifier">setup</span><span class="special">,</span> <span class="identifier">Callable2</span> <span class="identifier">cleanup</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Requires:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">Callable1</span></code> &amp;
+ <code class="computeroutput"><span class="identifier">Callable1</span></code> are <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>. Copying <code class="computeroutput"><span class="identifier">setup</span></code> or <code class="computeroutput"><span class="identifier">cleanup</span></code>
+ shall have no side effects, and the effect of calling the copy shall
+ be equivalent to calling the original.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">setup</span></code> and <code class="computeroutput"><span class="identifier">cleanup</span></code> are copied into storage
+ managed internally by the library, and the <code class="computeroutput"><span class="identifier">setup</span></code>
+ copy is invoked by the <code class="computeroutput"><span class="identifier">decorate</span><span class="special">()</span></code> function. If successful the cleanup
+ function is registered to the to the thread exit handler.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to a decoration.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe
+ </p></dd>
+</dl>
+</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>
+ The library do not ensures any order of setup decorations neither of
+ cleanup decorations.
+ </p></td></tr>
+</table></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="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="thread_decorator_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decorator_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decorator_hpp.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -0,0 +1,473 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Header &lt;boost/interthreads/thread_decorator.hpp&gt;</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.InterThreads">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="thread_decoration_hpp.html" title="
+ Header &lt;boost/interthreads/thread_decoration.hpp&gt;">
+<link rel="next" href="thread_specific_shared_ptr_hpp.html" title="
+ Header &lt;boost/interthreads/thread_specific_shared_ptr.hpp&gt;">
+</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="thread_decoration_hpp.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="thread_specific_shared_ptr_hpp.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_interthreads.reference.thread_decorator_hpp"></a><a href="thread_decorator_hpp.html" title="
+ Header &lt;boost/interthreads/thread_decorator.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_decorator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator">
+ Class <code class="computeroutput"><span class="identifier">thread_decorator</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructorn">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_move_constructor">
+ Copy Move Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_constructor">
+ Assign Move Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_conversion">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">thread_decorator</span><span class="special">&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_move">
+ Member Function <code class="computeroutput"><span class="identifier">move</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_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="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_operator_f">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">()()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.decorate">
+ Non Member Function <code class="computeroutput"><span class="identifier">decorate</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">interthreads</span> <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">thread_decorator</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">decorate</span><span class="special">();</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator" title="
+ Class thread_decorator">
+ Class <code class="computeroutput"><span class="identifier">thread_decorator</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructorn">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_move_constructor">
+ Copy Move Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_constructor">
+ Assign Move Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_conversion">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">thread_decorator</span><span class="special">&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_move">
+ Member Function <code class="computeroutput"><span class="identifier">move</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_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="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_operator_f">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">()()</span></code></a></span></dt>
+</dl></div>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_decorator</span></code> is a functor
+ wrapping a function with the setup and the cleanup of chained decorations
+ which will be called only once by thread: decoration's setup are called
+ before the thread function and decoration's cleanup at thread exit.
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">thread_decorator</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Callable</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> <span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">Callable</span><span class="special">&amp;&amp;</span> <span class="identifier">f</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Callable</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> <span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">Callable</span><span class="special">&gt;</span> <span class="identifier">f</span><span class="special">):</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Callable</span><span class="special">&gt;</span>
+ <span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">Callable</span> <span class="identifier">f</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">disable_if</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&amp;,</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">dummy</span><span class="special">*</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">=</span><span class="number">0</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Callable</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A2</span><span class="special">,</span> <span class="special">...&gt;</span>
+ <span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">Callable</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">A1</span> <span class="identifier">a1</span><span class="special">,</span> <span class="identifier">A2</span> <span class="identifier">a2</span><span class="special">,</span> <span class="special">...)</span>
+
+ <span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">thread_decorator</span><span class="special">&amp;&amp;</span> <span class="identifier">other</span><span class="special">);</span>
+
+ <span class="identifier">thread_decorator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">thread_decorator</span><span class="special">&amp;&amp;</span> <span class="identifier">other</span><span class="special">);</span>
+
+ <span class="identifier">thread_decorator</span><span class="special">&amp;&amp;</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">thread_decorator</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">void</span> <span class="keyword">operator</span> <span class="special">()();</span>
+
+<span class="special">};</span>
+</pre>
+<p>
+ Functor wrapping the user function thread to ensure that all the decorations
+ are called.
+ </p>
+<p>
+ Objects of type <code class="computeroutput"><span class="identifier">thread_decorator</span></code>
+ are movable, so they can be stored in move-aware containers, and returned
+ from functions. This allows the details of thread decoration to be wrapped
+ in a function.
+ </p>
+<pre class="programlisting"><span class="identifier">thread_decorator</span> <span class="identifier">make_decorator</span><span class="special">();</span>
+
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">boot</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">some_thread</span><span class="special">(</span><span class="identifier">make_decorator</span><span class="special">());</span>
+ <span class="identifier">some_thread</span><span class="special">.</span><span class="identifier">join</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+<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>
+ On compilers that support rvalue references, <code class="computeroutput"><span class="identifier">thread_decorator</span></code>
+ will provides a proper move constructor and move-assignment operator,
+ and therefore meets the C++0x <code class="computeroutput"><span class="identifier">MoveConstructible</span></code>
+ and <code class="computeroutput"><span class="identifier">MoveAssignable</span></code> concepts.
+ With such compilers, <code class="computeroutput"><span class="identifier">thread_decorator</span></code>
+ can therefore be used with containers that support those concepts.
+ </p>
+<p>
+ For other compilers, move support is provided with a move emulation layer,
+ so containers must explicitly detect that move emulation layer. See
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">thread</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">move</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code> for details.
+ </p>
+</td></tr>
+</table></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructor"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructor" title="
+ Constructor">
+ Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Callable</span><span class="special">&gt;</span>
+<span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">Callable</span><span class="special">&amp;&amp;</span> <span class="identifier">func</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Callable</span><span class="special">&gt;</span>
+<span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">Callable</span> <span class="identifier">func</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Template parameters:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">Callable</span></code> must by
+ <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">func</span></code> is copied into
+ storage managed internally by the library, and that copy will be
+ invoked after the operator() function when the decorate is used as
+ Callable of a newly-created thread of execution.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructorn"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructorn" title="
+ Constructor">
+ Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Callable</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A2</span><span class="special">,</span> <span class="special">...&gt;</span>
+<span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">Callable</span> <span class="identifier">func</span><span class="special">,</span> <span class="identifier">A1</span> <span class="identifier">a1</span><span class="special">,</span> <span class="identifier">A2</span> <span class="identifier">a2</span><span class="special">,</span> <span class="special">...)</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Template parameters:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">Callable</span></code> must by
+ <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">func</span></code> is copied into
+ storage managed internally by the library, and that copy will be
+ invoked after the operator() function when the decorate is used as
+ Callable of a newly-created thread of execution.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe
+ </p></dd>
+<dt><span class="term">Limitations:</span></dt>
+<dd><p>
+ The current implementation defines overloads up to four parameters.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_move_constructor"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_move_constructor" title="
+ Copy Move Constructor">
+ Copy Move Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">thread_decorator</span><span class="special">&amp;&amp;</span> <span class="identifier">other</span><span class="special">);</span>
+<span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">thread_decorator</span><span class="special">&gt;</span> <span class="identifier">other</span><span class="special">)</span> <span class="special">{</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Template parameters:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">Callable</span></code> must by
+ <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">func</span></code> is copied into
+ storage managed internally by the library, and that copy will be
+ invoked after the operator() function when the decorate is used as
+ Callable of a newly-created thread of execution.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_constructor"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_constructor" title="
+ Assign Move Constructor">
+ Assign Move Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">thread_decorator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">thread_decorator</span><span class="special">&amp;&amp;</span> <span class="identifier">other</span><span class="special">);</span>
+<span class="identifier">thread_decorator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">thread_decorator</span><span class="special">&gt;</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Requires:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">Callable</span></code> must by
+ <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">func</span></code> is copied into
+ storage managed internally by the library, and that copy will be
+ invoked after the operator() function when the decorate is used as
+ Callable of a newly-created thread of execution.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ a reference to <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>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ neutral
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_conversion"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_conversion" title="
+ Member Function operator detail::thread_move_t&lt;thread_decorator&gt;()">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">thread_decorator</span><span class="special">&gt;()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">operator</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">thread_decorator</span><span class="special">&gt;();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ helper for move semantics emulation.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ the move form <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>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ neutral
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_move"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_move" title="
+ Member Function move()">
+ Member Function <code class="computeroutput"><span class="identifier">move</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_move_t</span><span class="special">&lt;</span><span class="identifier">thread_decorator</span><span class="special">&gt;</span> <span class="identifier">move</span><span class="special">()</span> <span class="special">{</span>
+<span class="identifier">thread_decorator</span><span class="special">&amp;&amp;</span> <span class="identifier">move</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>
+ Move *this to the caller.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ the move form <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>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ neutral
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_swap"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_swap" title="
+ Member Function swap()">
+ 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">thread_decorator</span><span class="special">&amp;</span> <span class="identifier">x</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>
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ neutral
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_operator_f"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_operator_f" title="
+ Member Function operator()()">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">()()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</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>
+ Functor operator
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Any exception thrown by the decorations or the user function.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe - depends on the decorations construction/destruction.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.decorate"></a><a href="thread_decorator_hpp.html#toward_boost_interthreads.reference.thread_decorator_hpp.decorate" title="
+ Non Member Function decorate()">
+ Non Member Function <code class="computeroutput"><span class="identifier">decorate</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">decorate</span><span class="special">();</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Requires:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">Callable</span></code> is <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>. Copying <code class="computeroutput"><span class="identifier">f</span></code> shall have no side effects, and
+ the effect of calling the copy shall be equivalent to calling the original.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Calls every declared decoration using the thread_decoration class.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ All the decorations have been called.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Any exception thrown by the decorations.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ unsafe - depends on the decorations construction/destruction.
+ </p></dd>
+</dl>
+</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="thread_decoration_hpp.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="thread_specific_shared_ptr_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_group_once_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_group_once_hpp.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -0,0 +1,458 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Header &lt;boost/interthreads/thread_group_once.hpp&gt;</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.InterThreads">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="thread_tuple_once_hpp.html" title="
+ Header &lt;boost/interthreads/thread_tuple_once.hpp&gt;">
+<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="thread_tuple_once_hpp.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_interthreads.reference.thread_group_once_hpp"></a><a href="thread_group_once_hpp.html" title="
+ Header &lt;boost/interthreads/thread_group_once.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_group_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class">
+ Template Class <code class="computeroutput"><span class="identifier">thread_group_once</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_callable_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_destructor">
+ Destructor</a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_joinable">
+ Member function <code class="computeroutput"><span class="identifier">joinables</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_join">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_timed_join">
+ Member function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.join_first_then_interrupt">
+ Member function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.timed_join_first_then_interrupt">
+ Member function <code class="computeroutput"><span class="identifier">join_any_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.detach_all">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.member_function__interrupt_all___">Member
+ function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_size">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_make_thread_group_once">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_group_once</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">interthreads</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">thread_group</span><span class="special">;</span>
+
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class" title="
+ Template Class thread_group_once&lt;&gt;">
+ Template Class <code class="computeroutput"><span class="identifier">thread_group_once</span><span class="special">&lt;&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_callable_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_destructor">
+ Destructor</a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_joinable">
+ Member function <code class="computeroutput"><span class="identifier">joinables</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_join">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_timed_join">
+ Member function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.join_first_then_interrupt">
+ Member function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.timed_join_first_then_interrupt">
+ Member function <code class="computeroutput"><span class="identifier">join_any_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.detach_all">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.member_function__interrupt_all___">Member
+ function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_size">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_group_once</span><span class="special">&lt;&gt;</span></code>
+ is an extension of the boost::thread_group which allows to join the thread
+ finishing the first, using for that the set_once synchronizer.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">thread_group_once</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">thread_group_once</span><span class="special">();</span>
+ <span class="special">~</span><span class="identifier">thread_group_once</span><span class="special">();</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span>
+ <span class="identifier">thread</span><span class="special">*</span> <span class="identifier">create_thread</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">threadfunc</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">remove_thread</span><span class="special">(</span><span class="identifier">thread</span><span class="special">*</span> <span class="identifier">thrd</span><span class="special">);</span>
+
+ <span class="comment">// move support
+</span> <span class="identifier">thread_group_once</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_group_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</span> <span class="identifier">x</span><span class="special">);</span>
+ <span class="identifier">thread_group_once</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_group_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</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">move_t</span><span class="special">&lt;</span><span class="identifier">thread_group_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;();</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_group_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</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">thread_group_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&amp;</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">bool</span> <span class="identifier">joinables</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="identifier">join_all</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">join_all_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="identifier">join_all_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">join_any</span><span class="special">();</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">join_any_until</span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">join_any_for</span><span class="special">(</span>
+ <span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+ <span class="keyword">void</span> <span class="identifier">detach_all</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">interrupt_all</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="identifier">size_t</span> <span class="identifier">size</span><span class="special">();</span>
+
+ <span class="keyword">const</span> <span class="identifier">thread</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</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_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_callable_constructor"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_callable_constructor" title="
+ Constructor">
+ Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">thread_group_once</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>
+ creates a thread group.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to the newly created group of threads 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_resource_error</span></code> if an error
+ occurs.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_destructor"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_destructor" title="
+ Destructor">
+ Destructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">thread_group_once</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 *this have associateds thread of execution, calls detach() on
+ them. Destroys *this.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_joinable"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_joinable" title="
+ Member function joinables()">
+ Member function <code class="computeroutput"><span class="identifier">joinables</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">joinables</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 threads 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><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_join"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_join" title="
+ Member function join_all()">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">join_all</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>
+ Call <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the group.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the group has terminated.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">join</span></code> is one of the predefined interruption
+ points, <code class="computeroutput"><span class="identifier">thread_group_once</span><span class="special">&lt;&gt;::</span><span class="identifier">join_all</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_timed_join"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_timed_join" title="
+ Member function join_all_until()">
+ Member function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">join_all_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">join_all_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</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>
+ Call <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the group.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the group has terminated.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true if joined.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">timed_join</span></code> is one of the predefined
+ interruption points, <code class="computeroutput"><span class="identifier">thread_group_once</span><span class="special">&lt;&gt;::</span><span class="identifier">timed_join_all</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.join_first_then_interrupt"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.join_first_then_interrupt" title="
+ Member function join_any()">
+ Member function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">join_any</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>
+ Call <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code>
+ and the <code class="computeroutput"><span class="identifier">interrup_all</span><span class="special">()</span></code>.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the group has terminated.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">join_any</span></code> is
+ one of the predefined interruption points, <code class="computeroutput"><span class="identifier">thread_group_once</span><span class="special">&lt;&gt;::</span><span class="identifier">join_any</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.timed_join_first_then_interrupt"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.timed_join_first_then_interrupt" title="
+ Member function join_any_until()">
+ Member function <code class="computeroutput"><span class="identifier">join_any_until</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">join_any_until</span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">join_any_for</span><span class="special">(</span>
+ <span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</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>
+ Call <code class="computeroutput"><span class="identifier">get_until</span><span class="special">()</span></code>
+ and the <code class="computeroutput"><span class="identifier">interrup_all</span><span class="special">()</span></code>.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the group has terminated.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true if joined.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">timed_join</span></code> is one of the predefined
+ interruption points, <code class="computeroutput"><span class="identifier">thread_group_once</span><span class="special">&lt;&gt;::</span><span class="identifier">timed_join_all</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.detach_all"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.detach_all" title="
+ Member function detach_all()">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">detach_all</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>
+ Call <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the group.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.member_function__interrupt_all___"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.member_function__interrupt_all___" title="Member
+ function interrupt_all()">Member
+ function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">interrupt_all</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>
+ Call <code class="computeroutput"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">interrupt</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the group.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_size"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_size" title="
+ Member function size()">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">size</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 number of threads in the group.
+ </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><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_make_thread_group_once"></a><a href="thread_group_once_hpp.html#toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_make_thread_group_once" title="
+ Non Member Function make_thread_group_once()">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_group_once</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+<span class="identifier">thread_group_once</span> <span class="identifier">make_thread_group_once</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">f0</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="number">1</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>
+ makes a new thread_group_once&lt;&gt;.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ the created thread group.
+ </p></dd>
+</dl>
+</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="thread_tuple_once_hpp.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/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -0,0 +1,604 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Header &lt;boost/interthreads/thread_specific_shared_ptr.hpp&gt;</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.InterThreads">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="thread_decorator_hpp.html" title="
+ Header &lt;boost/interthreads/thread_decorator.hpp&gt;">
+<link rel="next" href="keep_alive_file_hpp.html" title="
+ Header &lt;boost/interthreads/thread_keep_alive.hpp&gt;">
+</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="thread_decorator_hpp.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="keep_alive_file_hpp.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_interthreads.reference.thread_specific_shared_ptr_hpp"></a><a href="thread_specific_shared_ptr_hpp.html" title="
+ Header &lt;boost/interthreads/thread_specific_shared_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr">
+ Template Class <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reference_parameters">
+ Template parameters</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reference_types">
+ Public types</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_default_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_constructor_with_custom_cleanup">
+ Cleanup Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_destructor">
+ Destructor</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_get">
+ Member Function <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operator_arrow">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operator_star">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">*()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reset">
+ Member Function <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_wait_and_get">
+ Member Function <code class="computeroutput"><span class="identifier">wait_and_get</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operatora">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_mutex">
+ Member Function <code class="computeroutput"><span class="identifier">get_mutex</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_map">
+ Member Function <code class="computeroutput"><span class="identifier">get_map</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+</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">interthreads</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">thread_specific_shared_ptr</span><span class="special">;</span>
+
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr" title="
+ Template Class thread_specific_shared_ptr&lt;&gt;">
+ Template Class <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reference_parameters">
+ Template parameters</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reference_types">
+ Public types</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_default_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_constructor_with_custom_cleanup">
+ Cleanup Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_destructor">
+ Destructor</a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_get">
+ Member Function <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operator_arrow">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operator_star">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">*()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reset">
+ Member Function <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_wait_and_get">
+ Member Function <code class="computeroutput"><span class="identifier">wait_and_get</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operatora">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_mutex">
+ Member Function <code class="computeroutput"><span class="identifier">get_mutex</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_map">
+ Member Function <code class="computeroutput"><span class="identifier">get_map</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+ <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code>
+ is an extension of the thread_specific_ptr providing access to the thread
+ specific context from other threads.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">thread_specific_shared_ptr</span> <span class="special">:</span> <span class="keyword">private</span> <span class="identifier">noncopyable</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">shared_ptr_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="char">'implementation defined'</span> <span class="identifier">map_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="char">'implementation defined'</span> <span class="identifier">mutex_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="char">'implementation defined'</span> <span class="identifier">lock_type</span><span class="special">;</span>
+
+ <span class="identifier">thread_specific_shared_ptr</span><span class="special">();</span>
+ <span class="keyword">explicit</span> <span class="identifier">thread_specific_shared_ptr</span><span class="special">(</span><span class="keyword">void</span> <span class="special">(*</span><span class="identifier">cleanup_</span><span class="special">)(</span><span class="identifier">shared_ptr_type</span><span class="special">));</span>
+ <span class="special">~</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">();</span>
+
+ <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">reset</span><span class="special">();</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span> <span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">D</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span> <span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">D</span> <span class="identifier">d</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">D</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span> <span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">D</span> <span class="identifier">d</span><span class="special">,</span> <span class="identifier">A</span> <span class="identifier">a</span><span class="special">);</span>
+
+ <span class="identifier">mutex_type</span><span class="special">&amp;</span> <span class="identifier">get_mutex</span><span class="special">();</span>
+ <span class="keyword">const</span> <span class="identifier">map_type</span><span class="special">&amp;</span> <span class="identifier">get_map</span><span class="special">(</span><span class="identifier">lock_type</span><span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">shared_ptr_type</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">id</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">shared_ptr_type</span> <span class="identifier">wait_and_get</span><span class="special">(</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">id</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">shared_ptr_type</span> <span class="identifier">get_shared_ptr</span><span class="special">()</span> <span class="keyword">const</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_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reference_parameters"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reference_parameters" title="
+ Template parameters">
+ Template parameters</a>
+</h5></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> is instantiated with the following
+ types:
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+ T The type of the pointeed object
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reference_types"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reference_types" title="
+ Public types">
+ Public types</a>
+</h5></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> defines the following types:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong><code class="computeroutput"><span class="identifier">shared_ptr_type</span></code></strong></span>
+ The shared pointed type.
+ </li>
+<li>
+<span class="bold"><strong><code class="computeroutput"><span class="identifier">map_type</span></code></strong></span>
+ The mapping type from <code class="computeroutput"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span></code>
+ to <code class="computeroutput"><span class="identifier">shared_ptr_type</span></code>
+</li>
+<li>
+<span class="bold"><strong><code class="computeroutput"><span class="identifier">mutex_type</span></code></strong></span>
+ The protecting mutext type follwing the Lockable Concept
+ </li>
+<li>
+<span class="bold"><strong><code class="computeroutput"><span class="identifier">lock_type</span></code></strong></span>
+ The lock used to get the map follwing the unique_lock subjacent Concept
+ </li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_default_constructor"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_default_constructor" title="
+ Constructor">
+ Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">thread_specific_shared_ptr</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>
+ Construct a <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> object for storing a pointer
+ to an object of type <code class="computeroutput"><span class="identifier">T</span></code>
+ specific to each thread.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_constructor_with_custom_cleanup"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_constructor_with_custom_cleanup" title="
+ Cleanup Constructor">
+ Cleanup Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">thread_specific_shared_ptr</span><span class="special">(</span><span class="keyword">void</span> <span class="special">(*</span><span class="identifier">cleanup_</span><span class="special">)(</span><span class="identifier">shared_ptr_type</span><span class="special">));</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Requires:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">cleanup_function</span><span class="special">(</span><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">())</span></code> does not throw any exceptions.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ Construct a <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> object for storing a pointer
+ to an object of type <code class="computeroutput"><span class="identifier">T</span></code>
+ specific to each thread. The supplied <code class="computeroutput"><span class="identifier">cleanup_function</span></code>
+ will be called at thread exit.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_destructor"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_destructor" title="
+ Destructor">
+ Destructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">thread_specific_shared_ptr</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>
+ Remove from the static map the current thread::id and 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>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</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>
+ Care needs to be taken to ensure that any threads still running after
+ an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> has been destroyed do not call
+ any member functions on that instance. Is for this raison that usualy
+ instance of this class are static.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_get"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_get" title="
+ Member Function get()">
+ Member Function <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">shared_ptr_type</span> <span class="identifier">get</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>
+ The pointer associated with the current thread.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</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>
+ The initial value associated with an instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> is <code class="computeroutput"><span class="number">0</span></code>
+ for each thread.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operator_arrow"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operator_arrow" title="
+ Member Function operator-&gt;()">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-&gt;()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">-&gt;()</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">Requires:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()</span></code>
+ is not <code class="computeroutput"><span class="number">0</span></code>.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()</span></code>
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operator_star"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operator_star" title="
+ Member Function operator*()">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">*()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">T</span><span class="special">&amp;</span> <span class="keyword">operator</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">Requires:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()</span></code>
+ is not <code class="computeroutput"><span class="number">0</span></code>.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="special">*(</span><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">())</span></code>
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reset"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_reset" title="
+ Member Function reset()">
+ Member Function <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">reset</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>
+ Equivalent to <code class="computeroutput"><span class="identifier">shared_ptr</span><span class="special">().</span><span class="identifier">swap</span><span class="special">(</span><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get_shared_ptr</span><span class="special">())</span></code>. Update the mapping.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()==</span><span class="number">0</span></code>
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span> <span class="special">*</span> <span class="identifier">new_value</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>
+ Equivalent to <code class="computeroutput"><span class="identifier">shared_ptr</span><span class="special">(</span><span class="identifier">new_value</span><span class="special">).</span><span class="identifier">swap</span><span class="special">(</span><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get_shared_ptr</span><span class="special">())</span></code>. Update the mapping.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()==</span><span class="identifier">new_value</span></code>
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">D</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span> <span class="special">*</span> <span class="identifier">new_value</span><span class="special">,</span> <span class="identifier">D</span> <span class="identifier">deleter</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>
+ Equivalent to <code class="computeroutput"><span class="identifier">shared_ptr</span><span class="special">(</span><span class="identifier">new_value</span><span class="special">,</span> <span class="identifier">deleter</span><span class="special">).</span><span class="identifier">swap</span><span class="special">(</span><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get_shared_ptr</span><span class="special">())</span></code>. Update the mapping.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()==</span><span class="identifier">new_value</span></code>
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">D</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span> <span class="special">*</span> <span class="identifier">new_value</span><span class="special">,</span> <span class="identifier">D</span> <span class="identifier">deleter</span><span class="special">,</span> <span class="identifier">A</span> <span class="identifier">a</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>
+ Equivalent to <code class="computeroutput"><span class="identifier">shared_ptr</span><span class="special">(</span><span class="identifier">new_value</span><span class="special">,</span> <span class="identifier">deleter</span><span class="special">,</span> <span class="identifier">a</span><span class="special">).</span><span class="identifier">swap</span><span class="special">(</span><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get_shared_ptr</span><span class="special">())</span></code>. Update the mapping.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()==</span><span class="identifier">new_value</span></code>
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> when resources unavailable.
+ </p></dd>
+<dt><span class="term">Thread safety:</span></dt>
+<dd><p>
+ safe.
+ </p></dd>
+</dl>
+</div>
+<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="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()!=</span><span class="identifier">new_value</span></code> and <code class="computeroutput"><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()</span></code> is non-<code class="computeroutput"><span class="identifier">NULL</span></code>,
+ invoke <code class="computeroutput"><span class="keyword">delete</span> <span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">()</span></code> or <code class="computeroutput"><span class="identifier">deleter</span><span class="special">(</span><span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">())</span></code> as appropriate. Store <code class="computeroutput"><span class="identifier">new_value</span></code> as the pointer associated
+ with the current thread.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_wait_and_get"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_wait_and_get" title="
+ Member Function wait_and_get()">
+ Member Function <code class="computeroutput"><span class="identifier">wait_and_get</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">shared_ptr_type</span> <span class="identifier">wait_and_get</span><span class="special">(</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">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">Effects:</span></dt>
+<dd><p>
+ Waits until the specific shared pointer has been set and returns
+ a shared pointer to this context.
+ </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>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operatora"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.thread_specific_shared_ptr_operatora" title="
+ Member Function operator[]()">
+ Member Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">shared_ptr_type</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">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">Effects:</span></dt>
+<dd><p>
+ Returns a copy of the specific shared_ptr of the thread of execution
+ identified by the <code class="computeroutput"><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><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_mutex"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_mutex" title="
+ Member Function get_mutex()">
+ Member Function <code class="computeroutput"><span class="identifier">get_mutex</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">mutex_type</span><span class="special">&amp;</span> <span class="identifier">get_mutex</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 a reference to the protection mutex.
+ </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><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_map"></a><a href="thread_specific_shared_ptr_hpp.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_map" title="
+ Member Function get_map()">
+ Member Function <code class="computeroutput"><span class="identifier">get_map</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">const</span> <span class="identifier">map_type</span><span class="special">&amp;</span> <span class="identifier">get_map</span><span class="special">(</span><span class="identifier">lock_type</span><span class="special">&amp;)</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">Effects:</span></dt>
+<dd><p>
+ Returns a reference to the mapping from <code class="computeroutput"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span></code>
+ to the specific pointers provided the user gives a lock on the motext
+ get using <code class="computeroutput"><span class="identifier">get_mutex</span><span class="special">()</span></code>.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing.
+ </p></dd>
+</dl>
+</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="thread_decorator_hpp.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="keep_alive_file_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_hpp.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -0,0 +1,536 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Header &lt;boost/interthreads/thread_tuple.hpp&gt;</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.InterThreads">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="set_once_hpp.html" title=" Header
+ &lt;boost/interthreads/set_once.hpp&gt;">
+<link rel="next" href="thread_tuple_once_hpp.html" title="
+ Header &lt;boost/interthreads/thread_tuple_once.hpp&gt;">
+</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="set_once_hpp.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="thread_tuple_once_hpp.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_interthreads.reference.thread_tuple_hpp"></a><a href="thread_tuple_hpp.html" title="
+ Header &lt;boost/interthreads/thread_tuple.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class">
+ Template Class <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.template_parameters">Template
+ parameters</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_callable_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_destructor">
+ Destructor</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_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="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_join">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_until___">Member
+ function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_for___">Member
+ function <code class="computeroutput"><span class="identifier">join_all_for</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.join_first_then_interrupt">
+ Member function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_any_until___">Member
+ function <code class="computeroutput"><span class="identifier">join_any_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.detach_all">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_interrupt_all">
+ Member function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_size">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_make_thread_tuple">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_tuple</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">interthreads</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">thread_tuple</span><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+ <span class="identifier">thread_tuple</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;</span> <span class="identifier">make_thread_tuple</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">f0</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="number">1</span><span class="special">);</span>
+
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class" title="
+ Template Class thread_tuple&lt;&gt;">
+ Template Class <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.template_parameters">Template
+ parameters</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_callable_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_destructor">
+ Destructor</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_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="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_join">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_until___">Member
+ function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_for___">Member
+ function <code class="computeroutput"><span class="identifier">join_all_for</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.join_first_then_interrupt">
+ Member function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_any_until___">Member
+ function <code class="computeroutput"><span class="identifier">join_any_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.detach_all">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_interrupt_all">
+ Member function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_size">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
+ defines a thread groupe where the number of threads is know statically
+ and the threads are created at construction time.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">thread_tuple</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+ <span class="identifier">thread_tuple</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">f0</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">-</span><span class="number">1</span> <span class="identifier">fn</span><span class="special">-</span><span class="number">1</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">&gt;</span>
+ <span class="identifier">thread_tuple</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;</span> <span class="identifier">f</span><span class="special">);</span>
+ <span class="special">~</span><span class="identifier">thread_tuple</span><span class="special">();</span>
+
+ <span class="comment">// move support
+</span> <span class="identifier">thread_tuple</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_tuple</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</span> <span class="identifier">x</span><span class="special">);</span>
+ <span class="identifier">thread_tuple</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_tuple</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</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">move_t</span><span class="special">&lt;</span><span class="identifier">thread_tuple</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;();</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_tuple</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</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">thread_tuple</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&amp;</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_all</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">join_all_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="identifier">join_all_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rel_time</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">detach_all</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">interrupt</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="identifier">interrupt_all</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="identifier">size_t</span> <span class="identifier">size</span><span class="special">();</span>
+
+ <span class="keyword">const</span> <span class="identifier">thread</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="special">};</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
+ class is responsible for launching and managing a static collection of
+ threads that are related in some fashion. No new threads can be added to
+ the tuple once constructed.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.template_parameters"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.template_parameters" title="Template
+ parameters">Template
+ parameters</a>
+</h5></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
+ is instantiated with the following value:
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+ n is the size of the tuple.
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_callable_constructor"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_callable_constructor" title="
+ Constructor">
+ Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+<span class="identifier">thread_tuple</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">func_0</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">-</span><span class="number">1</span> <span class="identifier">func_n</span><span class="special">-</span><span class="number">1</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">Fk</span></code> must by copyable.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">func_k</span></code> is copied
+ into storage managed internally by the library, and that copy is
+ invoked on a newly-created thread of execution. If this invocation
+ results in an exception being propagated into the internals of the
+ library that is not of type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code>,
+ then <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">()</span></code>
+ will be called.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to the newly created tuple of threads 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_resource_error</span></code> if an error
+ occurs.
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Currently up to ten arguments <code class="computeroutput"><span class="identifier">func_0</span></code>
+ to <code class="computeroutput"><span class="identifier">funct_9</span></code> can be
+ specified.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_destructor"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_destructor" title="
+ Destructor">
+ Destructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">thread_tuple</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 *this have associateds thread of execution, calls detach() on
+ them. Destroys *this.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_joinable"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_joinable" title="
+ Member function joinable()">
+ Member function <code class="computeroutput"><span class="identifier">joinable</span><span class="special">()</span></code></a>
+</h5></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 threads 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><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_join"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_join" title="
+ Member function join_all()">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">join</span><span class="special">();</span>
+<span class="keyword">void</span> <span class="identifier">join_all</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>
+ Call <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the tuple.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">join</span></code> is one of the predefined interruption
+ points, <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;::</span><span class="identifier">join_all</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_until___"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_until___" title="Member
+ function join_all_until()">Member
+ function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">join_all_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</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>
+ Call <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the tuple.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true if joined.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">timed_join</span></code> is one of the predefined
+ interruption points, <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;::</span><span class="identifier">join_all_until</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_for___"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_for___" title="Member
+ function join_all_for()">Member
+ function <code class="computeroutput"><span class="identifier">join_all_for</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</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">&amp;</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>
+ As <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">(</span><span class="identifier">now</span><span class="special">()+</span><span class="identifier">rel_time</span><span class="special">)</span></code>.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true if joined.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">timed_join</span></code> is one of the predefined
+ interruption points, <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;::</span><span class="identifier">join_all_for</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.join_first_then_interrupt"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.join_first_then_interrupt" title="
+ Member function join_any()">
+ Member function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">conc_join_any</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>
+ Call <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code>
+ on a temporary thread_tuple and the <code class="computeroutput"><span class="identifier">interrup_all</span><span class="special">()</span></code>.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code>
+ is one of the predefined interruption points, <code class="computeroutput"><span class="identifier">conc_join_any</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_any_until___"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_any_until___" title="Member
+ function join_any_until()">Member
+ function <code class="computeroutput"><span class="identifier">join_any_until</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">conc_join_any_until</span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">join_any_for</span><span class="special">(</span>
+ <span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</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>
+ Call <code class="computeroutput"><span class="identifier">join_any_until</span><span class="special">()</span></code> on a temporary thread_tuple and
+ the <code class="computeroutput"><span class="identifier">interrup_all</span><span class="special">()</span></code>.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true if joined.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">join_any_until</span><span class="special">()</span></code> is one of the predefined interruption
+ points, <code class="computeroutput"><span class="identifier">conc_join_any_until</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.detach_all"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.detach_all" title="
+ Member function detach_all()">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">detach_all</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>
+ Call <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the tuple.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_interrupt_all"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_interrupt_all" title="
+ Member function interrupt_all()">
+ Member function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">interrupt_all</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>
+ Call <code class="computeroutput"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">interrupt</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the tuple.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_size"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_size" title="
+ Member function size()">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">size</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 number of threads in the tuple.
+ </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><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_make_thread_tuple"></a><a href="thread_tuple_hpp.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_make_thread_tuple" title="
+ Non Member Function make_thread_tuple()">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_tuple</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+<span class="identifier">thread_tuple</span> <span class="identifier">make_thread_tuple</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">f0</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="number">1</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>
+ makes a new thread_tuple&lt;&gt;.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ the created thread tuple.
+ </p></dd>
+</dl>
+</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="set_once_hpp.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="thread_tuple_once_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_once_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_once_hpp.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -0,0 +1,502 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Header &lt;boost/interthreads/thread_tuple_once.hpp&gt;</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.InterThreads">
+<link rel="up" href="../reference.html" title=" Reference">
+<link rel="prev" href="thread_tuple_hpp.html" title="
+ Header &lt;boost/interthreads/thread_tuple.hpp&gt;">
+<link rel="next" href="thread_group_once_hpp.html" title="
+ Header &lt;boost/interthreads/thread_group_once.hpp&gt;">
+</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="thread_tuple_hpp.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="thread_group_once_hpp.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_interthreads.reference.thread_tuple_once_hpp"></a><a href="thread_tuple_once_hpp.html" title="
+ Header &lt;boost/interthreads/thread_tuple_once.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">thread_tuple_once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class">
+ Template Class <code class="computeroutput"><span class="identifier">thread_tuple_once</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.template_parameters">Template
+ parameters</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_callable_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_destructor">
+ Destructor</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_joinable">
+ Member function <code class="computeroutput"><span class="identifier">joinables</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_join">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_all_until___">Member
+ function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_any___">Member
+ function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.timed_join_first_then_interrupt">
+ Member function <code class="computeroutput"><span class="identifier">timed_join_first_then_interrupt</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.detach_all">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_interrupt_all">
+ Member function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_size">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_make_thread_tuple_once">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_tuple_once</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">interthreads</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">thread_tuple_once</span><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+ <span class="identifier">thread_tuple</span> <span class="identifier">make_thread_tuple_once</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">f0</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="number">1</span><span class="special">);</span>
+
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class" title="
+ Template Class thread_tuple_once&lt;&gt;">
+ Template Class <code class="computeroutput"><span class="identifier">thread_tuple_once</span><span class="special">&lt;&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.template_parameters">Template
+ parameters</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_callable_constructor">
+ Constructor</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_destructor">
+ Destructor</a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_joinable">
+ Member function <code class="computeroutput"><span class="identifier">joinables</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_join">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_all_until___">Member
+ function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_any___">Member
+ function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.timed_join_first_then_interrupt">
+ Member function <code class="computeroutput"><span class="identifier">timed_join_first_then_interrupt</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.detach_all">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_interrupt_all">
+ Member function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_size">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+ <code class="computeroutput"><span class="identifier">biththread_tuple_once</span></code> is
+ an extension of the <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_tuple</span></code>
+ which allows to join the thread finishing the first, using for that the
+ <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">set_once</span></code> synchronizer.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">thread_tuple_once</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+ <span class="identifier">thread_tuple_once</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">f0</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">-</span><span class="number">1</span> <span class="identifier">fn</span><span class="special">-</span><span class="number">1</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">&gt;</span>
+ <span class="identifier">thread_tuple_once</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;</span> <span class="identifier">f</span><span class="special">);</span>
+ <span class="special">~</span><span class="identifier">thread_tuple_once</span><span class="special">();</span>
+
+ <span class="comment">// move support
+</span> <span class="identifier">thread_tuple_once</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_tuple_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</span> <span class="identifier">x</span><span class="special">);</span>
+ <span class="identifier">thread_tuple_once</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_tuple_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</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">move_t</span><span class="special">&lt;</span><span class="identifier">thread_tuple_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;();</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_t</span><span class="special">&lt;</span><span class="identifier">thread_tuple_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&gt;</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">thread_tuple_once</span><span class="special">&lt;</span><span class="identifier">n</span><span class="special">&gt;&amp;</span> <span class="identifier">x</span><span class="special">);</span>
+
+ <span class="keyword">bool</span> <span class="identifier">joinables</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">join_all</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">join_all_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="identifier">join_all_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">join_any</span><span class="special">();</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">join_any_until</span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">join_any_for</span><span class="special">(</span>
+ <span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rel_time</span><span class="special">);</span>
+
+ <span class="keyword">void</span> <span class="identifier">detach_all</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">interrupt_all</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="identifier">size_t</span> <span class="identifier">size</span><span class="special">();</span>
+
+ <span class="keyword">const</span> <span class="identifier">thread</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="special">};</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The __thread_tuple<span class="underline">once</span>_ class is
+ responsible for launching and managing a static collection of threads that
+ are related in some fashion. No new threads can be added to the tuple once
+ constructed.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.template_parameters"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.template_parameters" title="Template
+ parameters">Template
+ parameters</a>
+</h5></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_tuple_once</span><span class="special">&lt;&gt;</span></code>
+ is instantiated with the following value:
+ </p>
+<div class="itemizedlist"><ul type="disc"><li>
+ n is the size of the tuple.
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_callable_constructor"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_callable_constructor" title="
+ Constructor">
+ Constructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+<span class="identifier">thread_tuple_once</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">func_0</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Fn</span><span class="special">-</span><span class="number">1</span> <span class="identifier">func_n</span><span class="special">-</span><span class="number">1</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">Fk</span></code> must by copyable.
+ </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">func_k</span></code> is copied
+ into storage managed internally by the library, and that copy is
+ invoked on a newly-created thread of execution. If this invocation
+ results in an exception being propagated into the internals of the
+ library that is not of type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code>,
+ then <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">()</span></code>
+ will be called.
+ </p></dd>
+<dt><span class="term">Postconditions:</span></dt>
+<dd><p>
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ refers to the newly created tuple of threads 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_resource_error</span></code> if an error
+ occurs.
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Currently up to ten arguments <code class="computeroutput"><span class="identifier">func_0</span></code>
+ to <code class="computeroutput"><span class="identifier">funct_9</span></code> can be
+ specified.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_destructor"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_destructor" title="
+ Destructor">
+ Destructor</a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">thread_tuple_once</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 *this have associateds thread of execution, calls detach() on
+ them. Destroys *this.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_joinable"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_joinable" title="
+ Member function joinables()">
+ Member function <code class="computeroutput"><span class="identifier">joinables</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">joinables</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 threads 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><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_join"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_join" title="
+ Member function join_all()">
+ Member function <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">join_all</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>
+ Call <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the tuple.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">join</span></code> is one of the predefined interruption
+ points, <code class="computeroutput"><span class="identifier">thread_tuple_once</span><span class="special">&lt;&gt;::</span><span class="identifier">join_all</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_all_until___"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_all_until___" title="Member
+ function join_all_until()">Member
+ function <code class="computeroutput"><span class="identifier">join_all_until</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">join_all_until</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">join_all_for</span><span class="special">(</span><span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</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>
+ Call <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the tuple.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true if joined.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">timed_join</span></code> is one of the predefined
+ interruption points, <code class="computeroutput"><span class="identifier">thread_tuple_once</span><span class="special">&lt;&gt;::</span><span class="identifier">timed_join_all</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_any___"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_any___" title="Member
+ function join_any()">Member
+ function <code class="computeroutput"><span class="identifier">join_any</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">join_any</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>
+ Call <code class="computeroutput"><span class="identifier">join_first</span><span class="special">()</span></code>
+ and the <code class="computeroutput"><span class="identifier">interrup_all</span><span class="special">()</span></code>.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">join</span></code> is one of the predefined interruption
+ points, <code class="computeroutput"><span class="identifier">thread_tuple_once</span><span class="special">&lt;&gt;::</span><span class="identifier">join_all</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.timed_join_first_then_interrupt"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.timed_join_first_then_interrupt" title="
+ Member function timed_join_first_then_interrupt()">
+ Member function <code class="computeroutput"><span class="identifier">timed_join_first_then_interrupt</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">timed_join_first_then_interrupt</span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="identifier">system_time</span><span class="special">&amp;</span> <span class="identifier">wait_until</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TimeDuration</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;</span> <span class="identifier">timed_join_first_then_interrupt</span><span class="special">(</span>
+ <span class="identifier">TimeDuration</span> <span class="keyword">const</span><span class="special">&amp;</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>
+ Call <code class="computeroutput"><span class="identifier">timed_join_first</span><span class="special">()</span></code> and the <code class="computeroutput"><span class="identifier">interrup_all</span><span class="special">()</span></code>.
+ </p></dd>
+<dt><span class="term">Postcondition:</span></dt>
+<dd><p>
+ Every thread in the tuple has terminated.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ true if joined.
+ </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+ Nothing
+ </p></dd>
+<dt><span class="term">Note:</span></dt>
+<dd><p>
+ Since <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">timed_join</span></code> is one of the predefined
+ interruption points, <code class="computeroutput"><span class="identifier">thread_tuple_once</span><span class="special">&lt;&gt;::</span><span class="identifier">timed_join_all</span><span class="special">()</span></code> is also an interruption point.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.detach_all"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.detach_all" title="
+ Member function detach_all()">
+ Member function <code class="computeroutput"><span class="identifier">detach_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">detach_all</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>
+ Call <code class="computeroutput"><span class="identifier">detach</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the tuple.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_interrupt_all"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_interrupt_all" title="
+ Member function interrupt_all()">
+ Member function <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">interrupt_all</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>
+ Call <code class="computeroutput"><span class="identifier">thread</span><span class="special">::</span><span class="identifier">interrupt</span><span class="special">()</span></code>
+ on each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code> object in the tuple.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_size"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_size" title="
+ Member function size()">
+ Member function <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">size</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 number of threads in the tuple.
+ </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><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_make_thread_tuple_once"></a><a href="thread_tuple_once_hpp.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_make_thread_tuple_once" title="
+ Non Member Function make_thread_tuple_once()">
+ Non Member Function <code class="computeroutput"><span class="identifier">make_thread_tuple_once</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F0</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="number">1</span><span class="special">&gt;</span>
+<span class="identifier">thread_tuple_once</span> <span class="identifier">make_thread_tuple_once</span><span class="special">(</span><span class="identifier">F0</span> <span class="identifier">f0</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="number">1</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>
+ makes a new thread_tuple_once&lt;&gt;.
+ </p></dd>
+<dt><span class="term">Returns:</span></dt>
+<dd><p>
+ the created thread tuple.
+ </p></dd>
+</dl>
+</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="thread_tuple_hpp.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="thread_group_once_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -41,8 +41,16 @@
         keep alive</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_interthreads.users_guide.tutorial.thread_extensions">Thread
- Extensions</a></span></dt></dl></dd>
+<dd><dl>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator">Thread
+ Decorator</a></span></dt>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer">Thread
+ Specific Shared Pointer</a></span></dt>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive">Keep
+ alive</a></span></dt>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple">Thread
+ Tuple</a></span></dt>
+</dl></dd>
 <dt><span class="section"><a href="users_guide/bibliography.html">
       References</a></span></dt>
 <dt><span class="section"> Glossary</span></dt>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/getting_started.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/getting_started.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/getting_started.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -72,7 +72,7 @@
 <span class="identifier">bjam</span>
 </pre>
 <a name="toward_boost_interthreads.users_guide.getting_started.install.build_requirements"></a><h5>
-<a name="id4759412"></a>
+<a name="id4759411"></a>
           <a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.build_requirements">Build
           Requirements</a>
         </h5>
@@ -145,7 +145,7 @@
           of exception safety as long as the underlying parameters provide it.
         </p>
 <a name="toward_boost_interthreads.users_guide.getting_started.install.thread_safety"></a><h5>
-<a name="id4759722"></a>
+<a name="id4759721"></a>
           <a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.thread_safety">Thread
           safety</a>
         </h5>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/tutorial.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/tutorial.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/tutorial.html 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -29,103 +29,134 @@
 <a name="toward_boost_interthreads.users_guide.tutorial"></a> Tutorial
 </h3></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions">Thread
- Extensions</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator">Thread
+ Decorator</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator">Thread
- Decorator</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer">Thread
- Specific Shared Pointer</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive">Keep
- alive</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple">Thread
- Tuple</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration">Declaring
+ a decoration</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.creating_threads_with_decorators">Creating
+ threads with decorators</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.decorator_explicit_call">
+ Calling explictly the decoration on a thread</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer">Thread
+ Specific Shared Pointer</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.key_initialization">Key
+ initialization</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.context_initialization">Context
+ initialization</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_on_the_current_thread">Obtain
+ the pointer to the thread-specific object on the current thread</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_of_another_thread">Obtain
+ the pointer to the thread-specific object of another thread</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.iterating_through_all_the_thread_specific_context">Iterating
+ through all the thread specific context</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.deleting_the_context">Deleting
+ the context</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.cleanup_at_thread_exit">Cleanup
+ at thread exit</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive">Keep
+ alive</a></span></dt>
+<dd><dl>
+<dt><span class="section">Interface</span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_mechanism_initialization">Keep
+ alive mechanism initialization</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_threads">
+ Which threads can be controlled?</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_enabling">
+ Enabling the keep alive mechanism</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_disabling">
+ Disabling the keep alive mechanism</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_persistent">
+ Configuring the dead persistency</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from_the_current_thread">Access
+ from the current thread</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from__the_controller_thread">Access
+ from the controller thread</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple">Thread
+ Tuple</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_launching">
+ Launching thread tuple</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_exceptions">
+ Exceptions in thread functions</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_joining">
+ Joining and detaching</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_interruption">
+ Interruption</a></span></dt>
 </dl></dd>
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions" title="Thread
- Extensions">Thread
- Extensions</a>
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator" title="Thread
+ Decorator">Thread
+ Decorator</a>
 </h4></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator">Thread
- Decorator</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer">Thread
- Specific Shared Pointer</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive">Keep
- alive</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple">Thread
- Tuple</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration">Declaring
+ a decoration</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.creating_threads_with_decorators">Creating
+ threads with decorators</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.decorator_explicit_call">
+ Calling explictly the decoration on a thread</a></span></dt>
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator" title="Thread
- Decorator">Thread
- Decorator</a>
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration" title="Declaring
+ a decoration">Declaring
+ a decoration</a>
 </h5></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.declaring_a_decoration">Declaring
- a decoration</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.creating_threads_with_decorators">Creating
- threads with decorators</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.decorator_explicit_call">
- Calling explictly the decoration on a thread</a></span></dt>
-</dl></div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.declaring_a_decoration"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.declaring_a_decoration" title="Declaring
- a decoration">Declaring
- a decoration</a>
-</h6></div></div></div>
-<p>
- Objects of type <code class="computeroutput"><span class="identifier">thread_decoration</span></code>
- are usualy static and initialized with a <code class="computeroutput"><span class="identifier">Callable</span></code>
- object:
- </p>
+<p>
+ Objects of type <code class="computeroutput"><span class="identifier">thread_decoration</span></code>
+ are usualy static and initialized with a <code class="computeroutput"><span class="identifier">Callable</span></code>
+ object:
+ </p>
 <pre class="programlisting"><span class="keyword">static</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">::</span><span class="identifier">thread_decoration</span> <span class="identifier">d</span><span class="special">;</span>
 <span class="keyword">void</span> <span class="identifier">setup</span><span class="special">();</span>
 
 <span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decoration</span> <span class="identifier">d</span><span class="special">(</span><span class="identifier">setup</span><span class="special">);</span>
 </pre>
 <p>
- These decorations will be called either when we request this explicitly
- at the initialization of the thread (this is needed on the main thread)
- or when we create a thread using specific decorator wrapper. This is
- explained in more detail in the next sections.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.creating_threads_with_decorators"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.creating_threads_with_decorators" title="Creating
- threads with decorators">Creating
- threads with decorators</a>
-</h6></div></div></div>
-<p>
- When we want the decorations to decorate one thread of execution we
- can create the thread using the decorator wrapper.
- </p>
+ These decorations will be called either when we request this explicitly
+ at the initialization of the thread (this is needed on the main thread)
+ or when we create a thread using specific decorator wrapper. This is
+ explained in more detail in the next sections.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.creating_threads_with_decorators"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.creating_threads_with_decorators" title="Creating
+ threads with decorators">Creating
+ threads with decorators</a>
+</h5></div></div></div>
+<p>
+ When we want the decorations to decorate one thread of execution we can
+ create the thread using the decorator wrapper.
+ </p>
 <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">th</span><span class="special">(</span><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decorator</span><span class="special">(</span><span class="identifier">fct</span><span class="special">));</span>
 </pre>
 <p>
- or using one of the <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
- decorators, as
- </p>
+ This behavion is obtained also using one of the <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
+ decorators of the Boost.Async library, as
+ </p>
 <pre class="programlisting"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">basic_threader_decorator</span> <span class="identifier">ae</span><span class="special">;</span>
 <span class="identifier">BOOST_AUTO</span><span class="special">(</span><span class="identifier">th</span><span class="special">,</span> <span class="identifier">bith</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">fct</span><span class="special">));</span>
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.decorator_explicit_call"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_decorator.decorator_explicit_call" title="
- Calling explictly the decoration on a thread">
- Calling explictly the decoration on a thread</a>
-</h6></div></div></div>
-<p>
- For threads that are not created using the boost::thread class, as
- it is the case of the main thread, we need to call explicitly the function
- <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span></code> at the begining of the thread.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.decorator_explicit_call"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.decorator_explicit_call" title="
+ Calling explictly the decoration on a thread">
+ Calling explictly the decoration on a thread</a>
+</h5></div></div></div>
+<p>
+ For threads that are not created using the boost::thread class, as it
+ is the case of the main thread, we need to call explicitly the function
+ <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span></code> at the begining of the thread.
+ </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">bith</span><span class="special">::</span><span class="identifier">decorate</span><span class="special">();</span>
     <span class="comment">// ...
@@ -134,67 +165,67 @@
 </div>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer" title="Thread
- Specific Shared Pointer">Thread
- Specific Shared Pointer</a>
-</h5></div></div></div>
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer" title="Thread
+ Specific Shared Pointer">Thread
+ Specific Shared Pointer</a>
+</h4></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.key_initialization">Key
- initialization</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.context_initialization">Context
- initialization</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_on_the_current_thread">Obtain
- the pointer to the thread-specific object on the current thread</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_of_another_thread">Obtain
- the pointer to the thread-specific object of another thread</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.iterating_through_all_the_thread_specific_context">Iterating
- through all the thread specific context</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.deleting_the_context">Deleting
- the context</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.cleanup_at_thread_exit">Cleanup
- at thread exit</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.key_initialization">Key
+ initialization</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.context_initialization">Context
+ initialization</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_on_the_current_thread">Obtain
+ the pointer to the thread-specific object on the current thread</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_of_another_thread">Obtain
+ the pointer to the thread-specific object of another thread</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.iterating_through_all_the_thread_specific_context">Iterating
+ through all the thread specific context</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.deleting_the_context">Deleting
+ the context</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.cleanup_at_thread_exit">Cleanup
+ at thread exit</a></span></dt>
 </dl></div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.key_initialization"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.key_initialization" title="Key
- initialization">Key
- initialization</a>
-</h6></div></div></div>
-<p>
- As the curent implementation uses the address of the thread_specific_shared_ptr&lt;&gt;
- object, there is no need to do anything to get the key.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.key_initialization"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.key_initialization" title="Key
+ initialization">Key
+ initialization</a>
+</h5></div></div></div>
+<p>
+ As the curent implementation uses the address of the thread_specific_shared_ptr&lt;&gt;
+ object, there is no need to do anything to get the key.
+ </p>
 <pre class="programlisting"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">;</span>
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.context_initialization"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.context_initialization" title="Context
- initialization">Context
- initialization</a>
-</h6></div></div></div>
-<p>
- Initially the pointer has a value of <code class="computeroutput"><span class="number">0</span></code>
- in each thread, but the value for the current thread can be set using
- the <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code>
- member functions.
- </p>
-<p>
- If the value of the pointer for the current thread is changed using
- <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code>,
- then the previous value is destroyed by calling the deleter routine.
- Alternatively, the stored value can be reset to <code class="computeroutput"><span class="number">0</span></code>
- and the prior value returned by calling the <code class="computeroutput"><span class="identifier">release</span><span class="special">()</span></code> member function, allowing the application
- to take back responsibility for destroying the object.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.context_initialization"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.context_initialization" title="Context
+ initialization">Context
+ initialization</a>
+</h5></div></div></div>
+<p>
+ Initially the pointer has a value of <code class="computeroutput"><span class="number">0</span></code>
+ in each thread, but the value for the current thread can be set using
+ the <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code>
+ member functions.
+ </p>
+<p>
+ If the value of the pointer for the current thread is changed using
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code>,
+ then the previous value is destroyed by calling the deleter routine.
+ Alternatively, the stored value can be reset to <code class="computeroutput"><span class="number">0</span></code>
+ and the prior value returned by calling the <code class="computeroutput"><span class="identifier">release</span><span class="special">()</span></code> member function, allowing the application
+ to take back responsibility for destroying the object.
+ </p>
 <p>
- Initialization can be done
- </p>
+ Initialization can be done
+ </p>
 <div class="itemizedlist"><ul type="disc"><li>
- explicitly on the curret thread. Basically it works like a thread
- local storage from inside the thread.
- </li></ul></div>
+ explicitly on the curret thread. Basically it works like a thread local
+ storage from inside the thread.
+ </li></ul></div>
 <pre class="programlisting"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">;</span>
 <span class="keyword">void</span> <span class="identifier">func</span><span class="special">()</span> <span class="special">{</span> <span class="comment">// current thread
 </span> <span class="comment">// ...
@@ -203,9 +234,9 @@
 </span><span class="special">}</span>
 </pre>
 <div class="itemizedlist"><ul type="disc"><li>
- When we associate a thread decoration to the thread_specific_shared_ptr&lt;&gt;
- we initialize implicitly every thread created with a thread_decorator.
- </li></ul></div>
+ When we associate a thread decoration to the thread_specific_shared_ptr&lt;&gt;
+ we initialize implicitly every thread created with a thread_decorator.
+ </li></ul></div>
 <pre class="programlisting"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">;</span>
 <span class="keyword">void</span> <span class="identifier">myclass_setup</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">ptr</span><span class="special">.</span><span class="identifier">reset</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">myclass</span><span class="special">(</span><span class="identifier">any</span> <span class="identifier">specific</span> <span class="identifier">parameters</span><span class="special">));</span>
@@ -220,19 +251,19 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_on_the_current_thread"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_on_the_current_thread" title="Obtain
- the pointer to the thread-specific object on the current thread">Obtain
- the pointer to the thread-specific object on the current thread</a>
-</h6></div></div></div>
-<p>
- All functions known from boost::thread_specific_ptr are available except
- the release function. The value for the current thread can be obtained
- using the <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code>
- member function, or by using the <code class="computeroutput"><span class="special">*</span></code>
- and <code class="computeroutput"><span class="special">-&gt;</span></code> pointer deference
- operators.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_on_the_current_thread"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_on_the_current_thread" title="Obtain
+ the pointer to the thread-specific object on the current thread">Obtain
+ the pointer to the thread-specific object on the current thread</a>
+</h5></div></div></div>
+<p>
+ All functions known from boost::thread_specific_ptr are available except
+ the release function. The value for the current thread can be obtained
+ using the <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code>
+ member function, or by using the <code class="computeroutput"><span class="special">*</span></code>
+ and <code class="computeroutput"><span class="special">-&gt;</span></code> pointer deference
+ operators.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">func</span><span class="special">()</span> <span class="special">{</span>
 <span class="special">{</span> <span class="comment">// current thread
 </span> <span class="comment">// ...
@@ -243,37 +274,36 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_of_another_thread"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_of_another_thread" title="Obtain
- the pointer to the thread-specific object of another thread">Obtain
- the pointer to the thread-specific object of another thread</a>
-</h6></div></div></div>
-<p>
- Besides, other threads can get access to the data provided a thread::id
- by:
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_of_another_thread"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.obtain_the_pointer_to_the_thread_specific_object_of_another_thread" title="Obtain
+ the pointer to the thread-specific object of another thread">Obtain
+ the pointer to the thread-specific object of another thread</a>
+</h5></div></div></div>
+<p>
+ Besides, other threads can get access to the data provided a thread::id
+ by:
+ </p>
 <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">th</span><span class="special">=</span><span class="identifier">bith</span><span class="special">::</span><span class="identifier">make_decorated_thread</span><span class="special">(</span><span class="identifier">func</span><span class="special">);</span>
 
 <span class="identifier">ptr</span><span class="special">[</span><span class="identifier">th</span><span class="special">-&gt;</span><span class="identifier">get_id</span><span class="special">()]-&gt;</span><span class="identifier">foo</span><span class="special">();</span>
 </pre>
 <p>
- where <code class="computeroutput"><span class="identifier">foo</span><span class="special">()</span></code>
- is a function of <code class="computeroutput"><span class="identifier">myclass</span></code>.
- </p>
-<p>
- This could work or not. The issue appears as we can get a reference
- to a thread before the thread has started, so the setting of the thread
- specific context could be not yet done. One way to manage with this
- error is to get the shared pointer and check if it contains something
- or not.
- </p>
+ where <code class="computeroutput"><span class="identifier">foo</span><span class="special">()</span></code>
+ is a function of <code class="computeroutput"><span class="identifier">myclass</span></code>.
+ </p>
+<p>
+ This could work or not. The issue appears as we can get a reference to
+ a thread before the thread has started, so the setting of the thread
+ specific context could be not yet done. One way to manage with this error
+ is to get the shared pointer and check if it contains something or not.
+ </p>
 <pre class="programlisting"><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;</span> <span class="identifier">shp</span> <span class="special">=</span> <span class="identifier">ptr</span><span class="special">[</span><span class="identifier">th</span><span class="special">-&gt;</span><span class="identifier">get_id</span><span class="special">()]-&gt;</span><span class="identifier">foo</span><span class="special">();</span>
 <span class="keyword">if</span> <span class="special">(</span><span class="identifier">shp</span><span class="special">.</span><span class="identifier">get</span><span class="special">()</span> <span class="special">!=</span> <span class="number">0</span><span class="special">)</span> <span class="identifier">shp</span><span class="special">-&gt;</span><span class="identifier">foo</span><span class="special">();</span>
 <span class="keyword">else</span> <span class="special">...</span>
 </pre>
 <p>
- When we need this we can pool:
- </p>
+ When we need this we can pool:
+ </p>
 <pre class="programlisting"><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;</span> <span class="identifier">shp</span><span class="special">;</span>
 <span class="keyword">do</span> <span class="special">{</span>
     <span class="identifier">shp</span> <span class="special">=</span> <span class="identifier">ptr</span><span class="special">[</span><span class="identifier">th</span><span class="special">-&gt;</span><span class="identifier">get_id</span><span class="special">()]-&gt;</span><span class="identifier">foo</span><span class="special">();</span>
@@ -281,51 +311,50 @@
 <span class="identifier">shp</span><span class="special">-&gt;</span><span class="identifier">foo</span><span class="special">();</span>
 </pre>
 <p>
- The library provides a synchonization mechanism to solve this issue.
- The wait_and_get() function allows a thread to synchronize with the
- setting from another thread.
- </p>
+ The library provides a synchonization mechanism to solve this issue.
+ The wait_and_get() function allows a thread to synchronize with the setting
+ from another thread.
+ </p>
 <pre class="programlisting"><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;</span> <span class="identifier">shp</span> <span class="special">=</span> <span class="identifier">ptr</span><span class="special">.</span><span class="identifier">wait_and_get</span><span class="special">(</span><span class="identifier">th</span><span class="special">-&gt;</span><span class="identifier">get_id</span><span class="special">());</span>
 <span class="identifier">shp</span><span class="special">-&gt;</span><span class="identifier">foo</span><span class="special">();</span>
 </pre>
 <p>
- shared_ptr&lt;myclass&gt; shp = ptr.wait_and_get(th-&gt;get_id());
- shp-&gt;foo(); or
- </p>
+ shared_ptr&lt;myclass&gt; shp = ptr.wait_and_get(th-&gt;get_id()); shp-&gt;foo();
+ or
+ </p>
 <pre class="programlisting"><span class="identifier">ptr</span><span class="special">.</span><span class="identifier">wait_and_get</span><span class="special">(</span><span class="identifier">th</span><span class="special">-&gt;</span><span class="identifier">get_id</span><span class="special">()-&gt;</span><span class="identifier">foo</span><span class="special">();</span>
 </pre>
 <p>
- In order to ensure that the decorations have been called, a cleaner
- and safer option is not to return the thread until it has been started.
- This behavior is obtained each time the thread is created with an
- <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code>
- decorator, as
- </p>
+ In order to ensure that the decorations have been called, a cleaner and
+ safer option is not to return the thread until it has been started. This
+ behavior is obtained each time the thread is created with an <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code> decorator when
+ using the Boost.Async library, as
+ </p>
 <pre class="programlisting"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">basic_threader_decorator</span> <span class="identifier">ae</span><span class="special">;</span>
 <span class="identifier">BOOST_AUTO</span><span class="special">(</span><span class="identifier">th</span><span class="special">,</span> <span class="identifier">bith</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">func</span><span class="special">));</span>
 <span class="comment">// here you are sure all the decorations have been called
 </span><span class="comment">// so we can access any thread_specific_shared_ptr of the created thread.
 </span></pre>
 <p>
- The lifetime of the myclass instance is managed by a shared_ptr. One
- reference is held by the thread (by means of a tss), a second is held
- by the thread::id to shared_ptr&lt;T&gt; map and additional references
- might be held by other threads, obtained by <code class="computeroutput"><span class="special">*</span><span class="identifier">pmyclass</span><span class="special">[</span><span class="identifier">th</span><span class="special">]</span></code>.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.iterating_through_all_the_thread_specific_context"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.iterating_through_all_the_thread_specific_context" title="Iterating
- through all the thread specific context">Iterating
- through all the thread specific context</a>
-</h6></div></div></div>
-<p>
- Another use case appears when some global controller needs to access
- the thread specific data of all the threads. Several approaches are
- here possible; the library has choosen to provide a map getter using
- a external locking mechanism that 'ensure' that the map access is locked
- during the map query.
- </p>
+ The lifetime of the myclass instance is managed by a shared_ptr. One
+ reference is held by the thread (by means of a tss), a second is held
+ by the thread::id to shared_ptr&lt;T&gt; map and additional references
+ might be held by other threads, obtained by <code class="computeroutput"><span class="special">*</span><span class="identifier">pmyclass</span><span class="special">[</span><span class="identifier">th</span><span class="special">]</span></code>.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.iterating_through_all_the_thread_specific_context"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.iterating_through_all_the_thread_specific_context" title="Iterating
+ through all the thread specific context">Iterating
+ through all the thread specific context</a>
+</h5></div></div></div>
+<p>
+ Another use case appears when some global controller needs to access
+ the thread specific data of all the threads. Several approaches are here
+ possible; the library has choosen to provide a map getter using a external
+ locking mechanism that 'ensure' that the map access is locked during
+ the map query.
+ </p>
 <pre class="programlisting"><span class="special">{</span>
     <span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;::</span><span class="identifier">lock_type</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">ptr</span><span class="special">.</span><span class="identifier">get_mutex</span><span class="special">());</span>
     <span class="keyword">const</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;::</span><span class="identifier">map_type</span> <span class="identifier">amap</span> <span class="special">=</span> <span class="identifier">ptr</span><span class="special">.</span><span class="identifier">get_map</span><span class="special">(</span><span class="identifier">lock</span><span class="special">);</span>
@@ -334,109 +363,109 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.deleting_the_context"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.deleting_the_context" title="Deleting
- the context">Deleting
- the context</a>
-</h6></div></div></div>
-<p>
- When a thread exits, the objects associated with each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code>
- instance is not inmediately destroyed due to its shared nature. It
- is detached from the current thread and removed from the map. Only
- when there are no more references to the shared pointer it will be
- destroyed. By default, the object pointed to by a pointer <code class="computeroutput"><span class="identifier">p</span></code> is destroyed by invoking <code class="computeroutput"><span class="keyword">delete</span> <span class="identifier">p</span></code>,
- but this can be overridden for a specific instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code>
- by providing a deleter routine to the constructor. In this case, the
- object is destroyed by invoking <code class="computeroutput"><span class="identifier">deleter</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span></code> where <code class="computeroutput"><span class="identifier">deleter</span></code>
- is the deleter routine supplied to the constructor. The deleter function
- is called only when there are no more references to the shared pointer.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.deleting_the_context"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.deleting_the_context" title="Deleting
+ the context">Deleting
+ the context</a>
+</h5></div></div></div>
+<p>
+ When a thread exits, the objects associated with each <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> instance is not inmediately destroyed
+ due to its shared nature. It is detached from the current thread and
+ removed from the map. Only when there are no more references to the shared
+ pointer it will be destroyed. By default, the object pointed to by a
+ pointer <code class="computeroutput"><span class="identifier">p</span></code> is destroyed
+ by invoking <code class="computeroutput"><span class="keyword">delete</span> <span class="identifier">p</span></code>,
+ but this can be overridden for a specific instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> by providing a deleter routine
+ to the constructor. In this case, the object is destroyed by invoking
+ <code class="computeroutput"><span class="identifier">deleter</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span></code>
+ where <code class="computeroutput"><span class="identifier">deleter</span></code> is the
+ deleter routine supplied to the constructor. The deleter function is
+ called only when there are no more references to the shared pointer.
+ </p>
 <pre class="programlisting"><span class="comment">// Add use of deleter !!!
 </span></pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.cleanup_at_thread_exit"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_specific_shared_pointer.cleanup_at_thread_exit" title="Cleanup
- at thread exit">Cleanup
- at thread exit</a>
-</h6></div></div></div>
-<p>
- When a thread exits, the objects associated with each thread_specific_shared_ptr&lt;&gt;
- instance is not inmediately destroyed due to its shared nature. Only
- when there are no more references to the shared pointer it will be
- destroyed. By default, the object pointed to by a pointer p is destroyed
- by invoking delete p, but this can be overridden for a specific instance
- of boost::thread_specific_shared_ptr&lt;&gt; by providing a cleanup
- routine to the constructor. In this case, the object is destroyed by
- invoking func(p) where func is the cleanup routine supplied to the
- constructor. The cleanup functions are called in an unspecified order.
- If a cleanup routine sets the value of associated with an instance
- of boost::thread_specific_shared_ptr&lt;&gt; that has already been
- cleaned up, that value is added to the cleanup list. Cleanup finishes
- when there are no outstanding instances of boost::thread_specific_shared_ptr&lt;&gt;
- with values. If a cleanup routine sets the value associated with an
- instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code>
- that has already been cleaned up, that value is added to the cleanup
- list. Cleanup finishes when there are no outstanding instances of
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code>
- with values.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.cleanup_at_thread_exit"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.cleanup_at_thread_exit" title="Cleanup
+ at thread exit">Cleanup
+ at thread exit</a>
+</h5></div></div></div>
+<p>
+ When a thread exits, the objects associated with each thread_specific_shared_ptr&lt;&gt;
+ instance is not inmediately destroyed due to its shared nature. Only
+ when there are no more references to the shared pointer it will be destroyed.
+ By default, the object pointed to by a pointer p is destroyed by invoking
+ delete p, but this can be overridden for a specific instance of boost::thread_specific_shared_ptr&lt;&gt;
+ by providing a cleanup routine to the constructor. In this case, the
+ object is destroyed by invoking func(p) where func is the cleanup routine
+ supplied to the constructor. The cleanup functions are called in an unspecified
+ order. If a cleanup routine sets the value of associated with an instance
+ of boost::thread_specific_shared_ptr&lt;&gt; that has already been cleaned
+ up, that value is added to the cleanup list. Cleanup finishes when there
+ are no outstanding instances of boost::thread_specific_shared_ptr&lt;&gt;
+ with values. If a cleanup routine sets the value associated with an instance
+ of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code>
+ that has already been cleaned up, that value is added to the cleanup
+ list. Cleanup finishes when there are no outstanding instances of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code>
+ with values.
+ </p>
 <pre class="programlisting"><span class="comment">// Add use of at thread_exit!!!
 </span></pre>
 </div>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive" title="Keep
- alive">Keep
- alive</a>
-</h5></div></div></div>
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive" title="Keep
+ alive">Keep
+ alive</a>
+</h4></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section">Interface</span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_mechanism_initialization">Keep
- alive mechanism initialization</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_threads">
- Which threads can be controlled?</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_enabling">
- Enabling the keep alive mechanism</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_disabling">
- Disabling the keep alive mechanism</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_persistent">
- Configuring the dead persistency</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.access_from_the_current_thread">Access
- from the current thread</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.access_from__the_controller_thread">Access
- from the controller thread</a></span></dt>
+<dt><span class="section">Interface</span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_mechanism_initialization">Keep
+ alive mechanism initialization</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_threads">
+ Which threads can be controlled?</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_enabling">
+ Enabling the keep alive mechanism</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_disabling">
+ Disabling the keep alive mechanism</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_persistent">
+ Configuring the dead persistency</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from_the_current_thread">Access
+ from the current thread</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from__the_controller_thread">Access
+ from the controller thread</a></span></dt>
 </dl></div>
 <p>
- We will use the implementation of the keep alive mechanism as tutorial
- for the thread decorators, thread specific shared pointers and the keep
- alive mechanism itself.
- </p>
-<p>
- We want to detect situations on which a thread is looping or blocked
- on some component. The user needs to state when this mechanism is enabled
- or disabled.
- </p>
-<p>
- Since the only purpose is to find threads that don't work, the thread
- needs to say if it is alive to a controller. The controler requests at
- predefined intervals if the thread is dead, and in this case it will
- call a user specific function which by default aborts the program.
- </p>
-<p>
- A thread is considered dead if during a given period the number of checkins
- is inferior to a given threshold. These two parameters are given when
- the keep alive mechanislm is enabled. At the begining of a thread the
- keep alive mechanism is disabled.
- </p>
+ We will use the implementation of the keep alive mechanism as tutorial
+ for the thread decorators, thread specific shared pointers and the keep
+ alive mechanism itself.
+ </p>
+<p>
+ We want to detect situations on which a thread is looping or blocked on
+ some component. The user needs to state when this mechanism is enabled
+ or disabled.
+ </p>
+<p>
+ Since the only purpose is to find threads that don't work, the thread needs
+ to say if it is alive to a controller. The controler requests at predefined
+ intervals if the thread is dead, and in this case it will call a user specific
+ function which by default aborts the program.
+ </p>
+<p>
+ A thread is considered dead if during a given period the number of checkins
+ is inferior to a given threshold. These two parameters are given when the
+ keep alive mechanislm is enabled. At the begining of a thread the keep
+ alive mechanism is disabled.
+ </p>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.interface"></a>Interface
-</h6></div></div></div>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.interface"></a>Interface
+</h5></div></div></div>
 <p>
- Next follows the keep alive interface.
- </p>
+ Next follows the keep alive interface.
+ </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">interthreads</span> <span class="special">{</span>
     <span class="keyword">namespace</span> <span class="identifier">this_thread</span> <span class="special">{</span>
@@ -466,17 +495,16 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_mechanism_initialization"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_mechanism_initialization" title="Keep
- alive mechanism initialization">Keep
- alive mechanism initialization</a>
-</h6></div></div></div>
-<p>
- There is a single controller <code class="computeroutput"><span class="identifier">keep_alive_mgr</span></code>.
- The controler needs to access some thread specific shared context
- <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span></code>
- to be able to control a thread.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_mechanism_initialization"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_mechanism_initialization" title="Keep
+ alive mechanism initialization">Keep
+ alive mechanism initialization</a>
+</h5></div></div></div>
+<p>
+ There is a single controller <code class="computeroutput"><span class="identifier">keep_alive_mgr</span></code>.
+ The controler needs to access some thread specific shared context <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span></code> to be able to
+ control a thread.
+ </p>
 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">detail</span> <span class="special">{</span>
     <span class="keyword">struct</span> <span class="identifier">thread_keep_alive_ctx</span> <span class="special">{</span>
         <span class="comment">// ...
@@ -502,30 +530,30 @@
 <span class="special">}</span>
 </pre>
 <p>
- The initialization of the controller itself and the setting the thread
- specific context is done using an internal thread decoration <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">initializer_</span></code> with <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">init</span></code>
- as setup function.
- </p>
+ The initialization of the controller itself and the setting the thread
+ specific context is done using an internal thread decoration <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">initializer_</span></code> with <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">init</span></code>
+ as setup function.
+ </p>
 <pre class="programlisting"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_keep_alive_ctx</span><span class="special">&gt;</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">instance_</span><span class="special">;</span>
 <span class="identifier">thread_decoration</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">initializer_</span><span class="special">(</span><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">init</span><span class="special">);</span>
 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">once_flag</span> <span class="identifier">keep_alive_mgr</span><span class="special">::</span><span class="identifier">flag</span><span class="special">;</span>
 </pre>
 <p>
- This setup function will initialize the <code class="computeroutput"><span class="identifier">keep_alive_mgr</span></code>
- and then set the <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> with a new <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span></code>.
- </p>
+ This setup function will initialize the <code class="computeroutput"><span class="identifier">keep_alive_mgr</span></code>
+ and then set the <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;&gt;</span></code> with a new <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span></code>.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">init</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">keep_alive_mgr</span><span class="special">::</span><span class="identifier">initialize</span><span class="special">();</span>
     <span class="identifier">instance_</span><span class="special">.</span><span class="identifier">reset</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">());</span>
 <span class="special">}</span>
 </pre>
 <p>
- The <code class="computeroutput"><span class="identifier">keep_alive_mgr</span><span class="special">::</span><span class="identifier">initialize</span></code>
- function ensures just that the init function is called once using the
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">call_once</span></code>. This <code class="computeroutput"><span class="identifier">init</span></code>
- function creates the instance of the <code class="computeroutput"><span class="identifier">keep_alive_mgr</span></code>
- singleton.
- </p>
+ The <code class="computeroutput"><span class="identifier">keep_alive_mgr</span><span class="special">::</span><span class="identifier">initialize</span></code> function ensures just that
+ the init function is called once using the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">call_once</span></code>.
+ This <code class="computeroutput"><span class="identifier">init</span></code> function creates
+ the instance of the <code class="computeroutput"><span class="identifier">keep_alive_mgr</span></code>
+ singleton.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">keep_alive_mgr</span><span class="special">::</span><span class="identifier">initialize</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">call_once</span><span class="special">(</span><span class="identifier">flag_</span><span class="special">,</span> <span class="identifier">init</span><span class="special">);</span>
 <span class="special">}</span>
@@ -535,46 +563,45 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_threads"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_threads" title="
- Which threads can be controlled?">
- Which threads can be controlled?</a>
-</h6></div></div></div>
-<p>
- As the keep alive mechanism uses a thread decoration, the user needs
- to explicitly call the <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span></code>
- function at the begining of the thread function or by wrapping the
- thread function. Instead of having a specific function to call or use
- a thread function wrapper, the keep alive uses the functions provided
- by the thread decorator (<code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span></code>
- and <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decorator</span></code>). So we must either
- call <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span></code> explicitly on the thread
- function
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_threads"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_threads" title="
+ Which threads can be controlled?">
+ Which threads can be controlled?</a>
+</h5></div></div></div>
+<p>
+ As the keep alive mechanism uses a thread decoration, the user needs
+ to explicitly call the <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span></code>
+ function at the begining of the thread function or by wrapping the thread
+ function. Instead of having a specific function to call or use a thread
+ function wrapper, the keep alive uses the functions provided by the thread
+ decorator (<code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span></code> and <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decorator</span></code>).
+ So we must either call <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span></code>
+ explicitly on the thread function
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">fct</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">bith</span><span class="special">::</span><span class="identifier">decorate</span><span class="special">();</span>
     <span class="comment">// ...
 </span><span class="special">}</span>
 </pre>
 <p>
- or create the thread with the <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">make_decorator</span></code>
- wrapper
- </p>
+ or create the thread with the <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">make_decorator</span></code>
+ wrapper
+ </p>
 <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">th</span><span class="special">(</span><span class="identifier">bith</span><span class="special">::</span><span class="identifier">make_decorator</span><span class="special">(</span><span class="identifier">fct</span><span class="special">));</span>
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_enabling"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_enabling" title="
- Enabling the keep alive mechanism">
- Enabling the keep alive mechanism</a>
-</h6></div></div></div>
-<p>
- To be controled by the keep alive manager we need to enable the mechanism
- using the enable_keep_alive. By default this enabler requires the application
- to do at least one check point every 2 seconds using the <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">keep_alive_point</span><span class="special">()</span></code>
- function.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_enabling"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_enabling" title="
+ Enabling the keep alive mechanism">
+ Enabling the keep alive mechanism</a>
+</h5></div></div></div>
+<p>
+ To be controled by the keep alive manager we need to enable the mechanism
+ using the enable_keep_alive. By default this enabler requires the application
+ to do at least one check point every 2 seconds using the <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">keep_alive_point</span><span class="special">()</span></code>
+ function.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">fct</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">using</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">;</span>
 
@@ -591,16 +618,16 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_disabling"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_disabling" title="
- Disabling the keep alive mechanism">
- Disabling the keep alive mechanism</a>
-</h6></div></div></div>
-<p>
- Some times we need to do an external task that could take an undefined
- time. We can then disable the keep alive mechanisme by using a disabler
- <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">disable_keep_alive</span></code>.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_disabling"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_disabling" title="
+ Disabling the keep alive mechanism">
+ Disabling the keep alive mechanism</a>
+</h5></div></div></div>
+<p>
+ Some times we need to do an external task that could take an undefined
+ time. We can then disable the keep alive mechanisme by using a disabler
+ <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">disable_keep_alive</span></code>.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">fct</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">using</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">;</span>
 
@@ -622,12 +649,12 @@
 <span class="special">}</span>
 </pre>
 <p>
- If on the contrary we don't want to disable the keep alive mechanism,
- it should be interesting to do a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">interruption_check_point</span><span class="special">()</span></code> just after the blocking task. In
- this way if the task takes too much time and the thread is declared
- dead, the possibility to manage the keep alive error by interrupting
- the dead thread remains, once the task is finished.
- </p>
+ If on the contrary we don't want to disable the keep alive mechanism,
+ it should be interesting to do a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">interruption_check_point</span><span class="special">()</span></code> just after the blocking task. In this
+ way if the task takes too much time and the thread is declared dead,
+ the possibility to manage the keep alive error by interrupting the dead
+ thread remains, once the task is finished.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">fct</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">;</span>
     <span class="keyword">using</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">;</span>
@@ -652,18 +679,18 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_persistent"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.keep_alive_persistent" title="
- Configuring the dead persistency">
- Configuring the dead persistency</a>
-</h6></div></div></div>
-<p>
- The default enabling parameters could be too restrictive in some cases.
- But the <code class="computeroutput"><span class="identifier">enable_keep_alive</span></code>
- configures it with the two parameters. We can declare a thread dead
- when the thread has not done a number of checkins in a given period.
- This can be useful when one knows the time a given task should take.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_persistent"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_persistent" title="
+ Configuring the dead persistency">
+ Configuring the dead persistency</a>
+</h5></div></div></div>
+<p>
+ The default enabling parameters could be too restrictive in some cases.
+ But the <code class="computeroutput"><span class="identifier">enable_keep_alive</span></code>
+ configures it with the two parameters. We can declare a thread dead when
+ the thread has not done a number of checkins in a given period. This
+ can be useful when one knows the time a given task should take.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">fct</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">using</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">;</span>
 
@@ -688,18 +715,18 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.access_from_the_current_thread"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.access_from_the_current_thread" title="Access
- from the current thread">Access
- from the current thread</a>
-</h6></div></div></div>
-<p>
- But how all this works. We start with enablers/disablers. Enablers/disablers
- use RAII, so they can be nested and the context be restored on the
- destructor. At the construction they store the current state of the
- keep alive of this thread using the backup function and then they enable/disable
- the KA mechanism. On destruction they restore the backed up context.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from_the_current_thread"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from_the_current_thread" title="Access
+ from the current thread">Access
+ from the current thread</a>
+</h5></div></div></div>
+<p>
+ But how all this works. We start with enablers/disablers. Enablers/disablers
+ use RAII, so they can be nested and the context be restored on the destructor.
+ At the construction they store the current state of the keep alive of
+ this thread using the backup function and then they enable/disable the
+ KA mechanism. On destruction they restore the backed up context.
+ </p>
 <pre class="programlisting"><span class="identifier">enable_keep_alive</span><span class="special">::</span><span class="identifier">enable_keep_alive</span><span class="special">(</span>
         <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">periods</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">checkins</span><span class="special">)</span>
 <span class="special">{</span>
@@ -721,8 +748,8 @@
 <span class="special">}</span>
 </pre>
 <p>
- These functions are quite simple
- </p>
+ These functions are quite simple
+ </p>
 <pre class="programlisting"><span class="identifier">thread_keep_alive_internal</span><span class="special">*</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">backup</span><span class="special">(</span><span class="identifier">thread_keep_alive_internal</span><span class="special">*</span> <span class="identifier">new_data</span><span class="special">)</span> <span class="special">{</span>
     <span class="identifier">thread_keep_alive_internal</span><span class="special">*</span> <span class="identifier">the_backup</span><span class="special">=</span><span class="identifier">data_</span><span class="special">;</span>
     <span class="identifier">data_</span><span class="special">=</span><span class="identifier">new_data</span>
@@ -741,14 +768,14 @@
 <span class="special">}</span>
 </pre>
 <p>
- Note that there is no need to check if the <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">instance_</span></code>
- contains a pointer because we have ensured that at initialization time.
- </p>
-<p>
- Next there is the central function <code class="computeroutput"><span class="identifier">keep_alive_point</span><span class="special">()</span></code>. This function does nothing more
- than relaying the request to the specific context of this thread. This
- function just increases the number of <code class="computeroutput"><span class="identifier">checkins_</span></code>.
- </p>
+ Note that there is no need to check if the <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">instance_</span></code>
+ contains a pointer because we have ensured that at initialization time.
+ </p>
+<p>
+ Next there is the central function <code class="computeroutput"><span class="identifier">keep_alive_point</span><span class="special">()</span></code>. This function does nothing more than
+ relaying the request to the specific context of this thread. This function
+ just increases the number of <code class="computeroutput"><span class="identifier">checkins_</span></code>.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">keep_alive_point</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">instance</span><span class="special">()-&gt;</span><span class="identifier">check_point</span><span class="special">();</span>
 <span class="special">}</span>
@@ -758,9 +785,9 @@
 <span class="special">}</span>
 </pre>
 <p>
- The <code class="computeroutput"><span class="identifier">set_on_dead_thread</span><span class="special">()</span></code> does the same. This function just
- stores the on-dead action.
- </p>
+ The <code class="computeroutput"><span class="identifier">set_on_dead_thread</span><span class="special">()</span></code> does the same. This function just stores
+ the on-dead action.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">set_on_dead_thread</span><span class="special">(</span><span class="identifier">on_dead_thread_type</span> <span class="identifier">fct</span><span class="special">,</span> <span class="identifier">thread</span><span class="special">*</span> <span class="identifier">th</span><span class="special">)</span> <span class="special">{</span>
     <span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">instance</span><span class="special">()-&gt;</span><span class="identifier">set_on_dead_thread</span><span class="special">(</span><span class="identifier">fct</span><span class="special">,</span> <span class="identifier">th</span><span class="special">);</span>
 <span class="special">}</span>
@@ -772,32 +799,31 @@
 </pre>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.access_from__the_controller_thread"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.keep_alive.access_from__the_controller_thread" title="Access
- from the controller thread">Access
- from the controller thread</a>
-</h6></div></div></div>
-<p>
- Up to now we have seen the use of <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_keep_alive_ctx</span></code>
- as a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_ptr</span></code>, i.e. it is used
- from the current thread.
- </p>
-<p>
- We will see now how the controler behaves. The single instance of the
- keep_alive_mgr has been created on the init function.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from__the_controller_thread"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from__the_controller_thread" title="Access
+ from the controller thread">Access
+ from the controller thread</a>
+</h5></div></div></div>
+<p>
+ Up to now we have seen the use of <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_keep_alive_ctx</span></code>
+ as a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_ptr</span></code>, i.e. it is used
+ from the current thread.
+ </p>
+<p>
+ We will see now how the controler behaves. The single instance of the
+ keep_alive_mgr has been created on the init function.
+ </p>
 <p>
- The constructor just constructs a thread with the loop function.
- </p>
+ The constructor just constructs a thread with the loop function.
+ </p>
 <pre class="programlisting"><span class="identifier">keep_alive_mgr</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">end_</span><span class="special">(</span><span class="keyword">false</span><span class="special">),</span> <span class="identifier">thread_</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="identifier">loop</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">end_</span><span class="special">)))</span> <span class="special">{}</span>
 </pre>
 <p>
- The loop function will iterate, every second, over all the thread_keep_alive_ctx
- threads specific contexts asking them to control themselves. Note that
- as the map can be modified when threads are created or finished, we
- need to protect the iteration externally with a lock on the protecting
- mutex.
- </p>
+ The loop function will iterate, every second, over all the thread_keep_alive_ctx
+ threads specific contexts asking them to control themselves. Note that
+ as the map can be modified when threads are created or finished, we need
+ to protect the iteration externally with a lock on the protecting mutex.
+ </p>
 <pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">loop</span><span class="special">(</span><span class="keyword">bool</span><span class="special">&amp;</span> <span class="identifier">end</span><span class="special">)</span> <span class="special">{</span>
     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">xtime</span> <span class="identifier">t</span><span class="special">;</span>
     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">xtime_get</span><span class="special">(&amp;</span><span class="identifier">t</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
@@ -815,24 +841,24 @@
 <span class="special">}</span>
 </pre>
 <p>
- The thread loops until the end variable is true. In order to stop proprely
- this thread we will use the destructor of singleton instance. This
- end variable is a reference to a variable stored on the keep_alive_mgr
- context which has been initialized staticly. So its destrcutor will
- be called when the program finishes. So it is up to the destructor
- to set this variable and wait for the thread completion
- </p>
+ The thread loops until the end variable is true. In order to stop proprely
+ this thread we will use the destructor of singleton instance. This end
+ variable is a reference to a variable stored on the keep_alive_mgr context
+ which has been initialized staticly. So its destrcutor will be called
+ when the program finishes. So it is up to the destructor to set this
+ variable and wait for the thread completion
+ </p>
 <pre class="programlisting"><span class="special">~</span><span class="identifier">keep_alive_mgr</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">end_</span><span class="special">=</span><span class="keyword">true</span><span class="special">;</span>
     <span class="identifier">thread_</span><span class="special">.</span><span class="identifier">join</span><span class="special">();</span>
 <span class="special">}</span>
 </pre>
 <p>
- The thread_keep_alive_ctx::control function behaves as follows: if
- it is enabled, it decreases the number of remaining periods and if
- the thread is declared dead it executes the on dead action and resets
- the check-ins and periods.
- </p>
+ The thread_keep_alive_ctx::control function behaves as follows: if it
+ is enabled, it decreases the number of remaining periods and if the thread
+ is declared dead it executes the on dead action and resets the check-ins
+ and periods.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">control</span><span class="special">(</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">id</span><span class="special">)</span> <span class="special">{</span>
     <span class="keyword">if</span> <span class="special">(</span><span class="identifier">data_</span><span class="special">-&gt;</span><span class="identifier">enabled_</span><span class="special">)</span> <span class="special">{</span>
         <span class="special">--</span><span class="identifier">data_</span><span class="special">-&gt;</span><span class="identifier">periods_</span><span class="special">;</span>
@@ -847,36 +873,36 @@
 </div>
 </div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple" title="Thread
- Tuple">Thread
- Tuple</a>
-</h5></div></div></div>
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple" title="Thread
+ Tuple">Thread
+ Tuple</a>
+</h4></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_launching">
- Launching thread tuple</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_exceptions">
- Exceptions in thread functions</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_joining">
- Joining and detaching</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_interruption">
- Interruption</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_launching">
+ Launching thread tuple</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_exceptions">
+ Exceptions in thread functions</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_joining">
+ Joining and detaching</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_interruption">
+ Interruption</a></span></dt>
 </dl></div>
 <div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_launching"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_launching" title="
- Launching thread tuple">
- Launching thread tuple</a>
-</h6></div></div></div>
-<p>
- A new thread tuple is launched by passing a collection of objects of
- some callable type, that can be invoked with no parameters. These objects
- are then copied into internal storage, and invoked on the newly-created
- threads of execution. If the objects must not (or cannot) be copied,
- then <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span></code> can be used to pass in a reference
- to the function object. In this case, the user of <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> must ensure that the referred-to
- object outlives the newly-created thread of execution.
- </p>
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_launching"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_launching" title="
+ Launching thread tuple">
+ Launching thread tuple</a>
+</h5></div></div></div>
+<p>
+ A new thread tuple is launched by passing a collection of objects of
+ some callable type, that can be invoked with no parameters. These objects
+ are then copied into internal storage, and invoked on the newly-created
+ threads of execution. If the objects must not (or cannot) be copied,
+ then <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span></code> can be used to pass in a reference
+ to the function object. In this case, the user of <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> must ensure that the referred-to
+ object outlives the newly-created thread of execution.
+ </p>
 <pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">callable</span>
 <span class="special">{</span>
     <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()();</span>
@@ -898,108 +924,107 @@
 </span> <span class="comment">// this leads to undefined behaviour
 </span></pre>
 <p>
- If you wish to construct an instance of <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> with a function or callable
- object that requires arguments to be supplied, this can NOT be done
- by passing additional arguments as is the case for threads to the
- <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
- constructor, and you will need to use bind explicitly.
- </p>
+ If you wish to construct an instance of <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> with a function or callable object
+ that requires arguments to be supplied, this can NOT be done by passing
+ additional arguments as is the case for threads to the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
+ constructor, and you will need to use bind explicitly.
+ </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">find_the_question</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">the_answer</span><span class="special">);</span>
 
 <span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_tuple</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="identifier">deep_thought_2</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="identifier">find_the_question</span><span class="special">,</span><span class="number">42</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="identifier">find_the_question</span><span class="special">,</span><span class="number">16</span><span class="special">));</span>
 </pre>
 <p>
- The arguments are <span class="emphasis"><em>copied</em></span> into the internals of
- Boost.Bind structure: if a reference is required, use <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span></code>, just as for references to callable
- functions.
- </p>
-<p>
- The limit on the number of additional arguments that can be passed
- are specified by the Boost.Bind.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_exceptions"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_exceptions" title="
- Exceptions in thread functions">
- Exceptions in thread functions</a>
-</h6></div></div></div>
-<p>
- If the function or callable object passed to the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> constructor propagates an exception
- that is not of type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code>,
- when invoked, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">()</span></code>
- is called.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_joining"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_joining" title="
- Joining and detaching">
- Joining and detaching</a>
-</h6></div></div></div>
-<p>
- When the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object that represents a collection
- of threads of execution is destroyed, the threads become <span class="emphasis"><em>detached</em></span>.
- Once threads are detached, they will continue executing until the invocation
- of the functions or callable objects supplied on construction completes,
- or the program is terminated. The threads of a <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> can also be detached by explicitly
- invoking the detach member function on the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object. In this case, all the
- threads of the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object cease to represent the
- now-detached thread, and instead represents 'Not-a-Thread.
- </p>
-<p>
- In order to wait for a tuple of threads of execution to finish, the
- <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
- or <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
- member functions of the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object must be used. <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
- will block the calling thread until the all the threads represented
- by the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object have completed. If the
- threads of execution represented by the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object have already completed,
- or the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> objects represents <span class="emphasis"><em>Not-a-Thread</em></span>,
- then <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
- returns immediately. <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code> is similar, except that a call to
- <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
- will also return if the threads being waited for do not complete when
- the specified time has elapsed.
- </p>
-<p>
- There is also a possibility to wait until the first thread completes,
- interrupting the rest of the threads.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h6 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_interruption"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_extensions.thread_tuple.thread_tuple_interruption" title="
- Interruption">
- Interruption</a>
-</h6></div></div></div>
-<p>
- A tuple of running threads can be <span class="emphasis"><em>interrupted</em></span>
- by invoking the <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code> member function of the corresponding
- <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
- object. When the interrupted threads next execute one of the specified
- <span class="emphasis"><em>interruption points</em></span> (or if it is currently <span class="emphasis"><em>blocked</em></span>
- whilst executing one) with interruption enabled, then a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code> exception will
- be thrown in the interrupted thread. If not caught, this will cause
- the execution of the interrupted thread to terminate. As with any other
- exception, the stack will be unwound, and destructors for objects of
- automatic storage duration will be executed.
- </p>
-<p>
- See the Boost.Threads
- library on how to avoid a thread being interrupted.
- </p>
-<p>
- At any point, the interruption state for the current thread can be
- queried by calling <code class="computeroutput"><span class="identifier">interruption_enabled</span></code>.
- </p>
-<a name="interruption_points"></a><p>
- </p>
+ The arguments are <span class="emphasis"><em>copied</em></span> into the internals of Boost.Bind
+ structure: if a reference is required, use <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span></code>,
+ just as for references to callable functions.
+ </p>
 <p>
- See the Boost.Threads
- library for the Predefined Interruption Points.
- </p>
+ The limit on the number of additional arguments that can be passed are
+ specified by the Boost.Bind.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_exceptions"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_exceptions" title="
+ Exceptions in thread functions">
+ Exceptions in thread functions</a>
+</h5></div></div></div>
+<p>
+ If the function or callable object passed to the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> constructor propagates an exception
+ that is not of type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code>,
+ when invoked, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">()</span></code>
+ is called.
+ </p>
 </div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_joining"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_joining" title="
+ Joining and detaching">
+ Joining and detaching</a>
+</h5></div></div></div>
+<p>
+ When the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object that represents a collection
+ of threads of execution is destroyed, the threads become <span class="emphasis"><em>detached</em></span>.
+ Once threads are detached, they will continue executing until the invocation
+ of the functions or callable objects supplied on construction completes,
+ or the program is terminated. The threads of a <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> can also be detached by explicitly
+ invoking the detach member function on the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object. In this case, all the
+ threads of the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object cease to represent the
+ now-detached thread, and instead represents 'Not-a-Thread.
+ </p>
+<p>
+ In order to wait for a tuple of threads of execution to finish, the
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ or <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ member functions of the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> object must be used. <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ will block the calling thread until the all the threads represented by
+ the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
+ object have completed. If the threads of execution represented by the
+ <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
+ object have already completed, or the <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> objects represents <span class="emphasis"><em>Not-a-Thread</em></span>,
+ then <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ returns immediately. <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code> is similar, except that a call to
+ <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ will also return if the threads being waited for do not complete when
+ the specified time has elapsed.
+ </p>
+<p>
+ There is also a possibility to wait until the first thread completes,
+ interrupting the rest of the threads.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_interruption"></a><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_interruption" title="
+ Interruption">
+ Interruption</a>
+</h5></div></div></div>
+<p>
+ A tuple of running threads can be <span class="emphasis"><em>interrupted</em></span> by
+ invoking the <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code> member function of the corresponding
+ <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code>
+ object. When the interrupted threads next execute one of the specified
+ <span class="emphasis"><em>interruption points</em></span> (or if it is currently <span class="emphasis"><em>blocked</em></span>
+ whilst executing one) with interruption enabled, then a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_interrupted</span></code> exception will be
+ thrown in the interrupted thread. If not caught, this will cause the
+ execution of the interrupted thread to terminate. As with any other exception,
+ the stack will be unwound, and destructors for objects of automatic storage
+ duration will be executed.
+ </p>
+<p>
+ See the Boost.Threads
+ library on how to avoid a thread being interrupted.
+ </p>
+<p>
+ At any point, the interruption state for the current thread can be queried
+ by calling <code class="computeroutput"><span class="identifier">interruption_enabled</span></code>.
+ </p>
+<a name="interruption_points"></a><p>
+ </p>
+<p>
+ See the Boost.Threads
+ library for the Predefined Interruption Points.
+ </p>
 </div>
 </div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/reference.qbk
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/reference.qbk (original)
+++ sandbox/interthreads/libs/interthreads/doc/reference.qbk 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -10,17 +10,17 @@
 [/==========================]
 [include concepts.qbk]
 
-[section Thread Extensions Reference]
+[/section Thread Extensions Reference]
 [include reference/thread_decoration.qbk]
 [include reference/thread_decorator.qbk]
 
 [include reference/thread_specific_shared_ptr.qbk]
 
 [include reference/thread_keep_alive.qbk]
-[endsect]
+[/endsect]
 
 
-[section Thread Array Reference]
+[/section Thread Array Reference]
 
 [include reference/set_once.qbk]
 [include reference/thread_tuple.qbk]
@@ -28,6 +28,6 @@
 [include reference/thread_group_once.qbk]
 
 [/include reference/thread_and_join.qbk]
-[endsect]
+[/endsect]
 
 [endsect]

Modified: sandbox/interthreads/libs/interthreads/doc/tutorial.qbk
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/tutorial.qbk (original)
+++ sandbox/interthreads/libs/interthreads/doc/tutorial.qbk 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -8,7 +8,7 @@
 [section:tutorial Tutorial]
 [/========================]
 
-[section Thread Extensions]
+[/section Thread Extensions]
 
 [section Thread Decorator]
 [/==========================================================================================]
@@ -30,11 +30,13 @@
 
     boost::thread th(bith::thread_decorator(fct));
 
-or using one of the __AE__ decorators, as
+
+This behavion is obtained also using one of the __AE__ decorators of the Boost.Async library, as
 
     bith::basic_threader_decorator ae;
     BOOST_AUTO(th, bith::fork(ae, fct));
 
+
 [endsect]
 
 [section:decorator_explicit_call Calling explictly the decoration on a thread]
@@ -159,7 +161,7 @@
 
 
 In order to ensure that the decorations have been called, a cleaner and safer option is not to return the thread until it has been started.
-This behavior is obtained each time the thread is created with an __AE__ decorator, as
+This behavior is obtained each time the thread is created with an __AE__ decorator when using the Boost.Async library, as
 
     bith::basic_threader_decorator ae;
     BOOST_AUTO(th, bith::fork(ae, func));
@@ -686,7 +688,7 @@
 
 [endsect]
 [endsect]
-[endsect]
+[/endsect]
 
 
 [endsect]
\ No newline at end of file

Modified: sandbox/interthreads/libs/interthreads/test/Jamfile.v2
==============================================================================
--- sandbox/interthreads/libs/interthreads/test/Jamfile.v2 (original)
+++ sandbox/interthreads/libs/interthreads/test/Jamfile.v2 2009-10-16 04:38:39 EDT (Fri, 16 Oct 2009)
@@ -19,6 +19,11 @@
 # bring in rules for testing
 import testing ;
 
+if ! $(BOOST_ROOT)
+{
+ BOOST_ROOT = [ modules.peek : BOOST_ROOT ] ;
+}
+
 project
     : requirements
         <library>/boost/test//boost_unit_test_framework/<link>static
@@ -27,7 +32,7 @@
         #<library>/sandbox/interthreads/libs/interthreads/build//boost_interthreads/<link>static
 
         <include>../../..
- <include>$(BOOST_ROOT)
+ <include>/boost_1_39_0
         <threading>multi
 # <target-os>cygwin
 # <interthreadapi>pthread


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