Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68960 - in sandbox/interthreads/libs/interthreads/doc: . html html/toward_boost_interthreads html/toward_boost_interthreads/appendices html/toward_boost_interthreads/examples html/toward_boost_interthreads/overview html/toward_boost_interthreads/reference html/toward_boost_interthreads/users_guide
From: vicente.botet_at_[hidden]
Date: 2011-02-16 14:38:24


Author: viboes
Date: 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
New Revision: 68960
URL: http://svn.boost.org/trac/boost/changeset/68960

Log:
Interthreads: update doc
Text files modified:
   sandbox/interthreads/libs/interthreads/doc/Jamfile.v2 | 17
   sandbox/interthreads/libs/interthreads/doc/html/index.html | 102
   sandbox/interthreads/libs/interthreads/doc/html/standalone_HTML.manifest | 23
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices.html | 1931 ++++++++++++++++++++++++++
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/acknowledgements.html | 21
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/changes.html | 109
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/implementation.html | 181 +-
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/rationale.html | 1442 +++++++++----------
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/tests.html | 23
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/tickets.html | 277 +-
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/todo.html | 185 +-
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples.html | 324 ++++
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/examples/thread_safe_deferred_traces.html | 64
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview.html | 476 ++++-
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview/motivation.html | 75
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference.html | 2857 +++++++++++++++++++++++++++++++++++++++
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/concepts.html | 20
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/keep_alive_file_hpp.html | 272 +--
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/set_once_hpp.html | 53
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decoration_hpp.html | 165 +-
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decorator_hpp.html | 474 +++---
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_group_once_hpp.html | 482 +++---
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html | 634 ++++----
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_hpp.html | 541 +++----
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_once_hpp.html | 514 +++---
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide.html | 1753 ++++++++++++++++++++++++
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/bibliography.html | 26
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/getting_started.html | 180 +-
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/glosary.html | 62
   sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/tutorial.html | 372 ++---
   sandbox/interthreads/libs/interthreads/doc/interthreads.qbk | 9
   sandbox/interthreads/libs/interthreads/doc/overview.qbk | 72
   sandbox/interthreads/libs/interthreads/doc/rationale.qbk | 16
   sandbox/interthreads/libs/interthreads/doc/users_guide.qbk | 5
   34 files changed, 10044 insertions(+), 3713 deletions(-)

Modified: sandbox/interthreads/libs/interthreads/doc/Jamfile.v2
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/Jamfile.v2 (original)
+++ sandbox/interthreads/libs/interthreads/doc/Jamfile.v2 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -17,7 +17,7 @@
         # Use graphics not text for navigation:
         <xsl:param>navig.graphics=1
         # How far down we chunk nested sections, basically all of them:
- <xsl:param>chunk.section.depth=2
+ <xsl:param>chunk.section.depth=1
         # Don't put the first section on the same page as the TOC:
         <xsl:param>chunk.first.sections=1
         # How far down sections get TOC's
@@ -31,15 +31,15 @@
         # Path for libraries index:
         <xsl:param>boost.libraries=../../../../libs/libraries.htm
         # Use the main Boost stylesheet:
- <xsl:param>html.stylesheet=../../../../doc/html/boostbook.css
+ <xsl:param>html.stylesheet=../../../../doc/src/boostbook.css
 
         # PDF Options:
         # TOC Generation: this is needed for FOP-0.9 and later:
- #<xsl:param>fop1.extensions=1
+ <format>pdf:<xsl:param>fop1.extensions=0
         # Or enable this if you're using XEP:
- <xsl:param>xep.extensions=1
+ <format>pdf:<xsl:param>xep.extensions=1
         # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
- <xsl:param>fop.extensions=0
+ <format>pdf:<xsl:param>fop.extensions=0
         # No indent on body text:
         <xsl:param>body.start.indent=0pt
         # Margin size:
@@ -52,6 +52,9 @@
         # default pnd graphics are awful in PDF form,
         # better use SVG's instead:
         <format>pdf:<xsl:param>admon.graphics.extension=".svg"
- <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
- ;
+ <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)
+ <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/interthreads/doc/html
+ ;
+
+install pdf-install : standalone : <location>. <install-type>PDF ;
 

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,12 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>Toward Boost.InterThreads</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="next" href="toward_boost_interthreads/overview.html" title=" Overview">
+<title>Toward Boost.InterThreads 0.1.3</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="next" href="toward_boost_interthreads/overview.html" title="Overview">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -19,17 +18,17 @@
 </tr></table>
 <hr>
 <div class="spirit-nav"><a accesskey="n" href="toward_boost_interthreads/overview.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
-<div class="article" lang="en">
+<div class="article">
 <div class="titlepage">
 <div>
 <div><h2 class="title">
-<a name="toward_boost_interthreads"></a>Toward Boost.InterThreads</h2></div>
+<a name="toward_boost_interthreads"></a>Toward Boost.InterThreads 0.1.3</h2></div>
 <div><div class="authorgroup"><div class="author"><h3 class="author">
 <span class="firstname">Vicente J.</span> <span class="surname">Botet Escriba</span>
 </h3></div></div></div>
-<div><p class="copyright">Copyright &#169; 2008 -2009 Vicente J. Botet Escriba</p></div>
+<div><p class="copyright">Copyright &#169; 2008 -2009,2011 Vicente J. Botet Escriba</p></div>
 <div><div class="legalnotice">
-<a name="id4946174"></a><p>
+<a name="id3012888"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -40,56 +39,56 @@
 <div class="toc">
 <p><b>Table of Contents</b></p>
 <dl>
-<dt><span class="section"> Overview</span></dt>
-<dd><dl><dt><span class="section"> Motivation</span></dt></dl></dd>
-<dt><span class="section"> Users'Guide</span></dt>
+<dt><span class="section">Overview</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="toward_boost_interthreads/users_guide/getting_started.html">
- Getting Started</a></span></dt>
-<dt><span class="section"> Tutorial</span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/users_guide/bibliography.html">
- References</a></span></dt>
-<dt><span class="section"> Glossary</span></dt>
+<dt><span class="section">Motivation</span></dt>
+<dt><span class="section">Description</span></dt>
 </dl></dd>
-<dt><span class="section"> Reference</span></dt>
+<dt><span class="section">Users'Guide</span></dt>
 <dd><dl>
-<dt><span class="section">Concepts</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
+<dt><span class="section"><a href="toward_boost_interthreads/users_guide.html#toward_boost_interthreads.users_guide.getting_started">Getting
+ Started</a></span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dt><span class="section">Examples</span></dt>
+<dt><span class="section">References</span></dt>
+<dt><span class="section">Glossary</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Concepts</span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/reference.html#toward_boost_interthreads.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="toward_boost_interthreads/reference.html#toward_boost_interthreads.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="toward_boost_interthreads/reference.html#toward_boost_interthreads.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="toward_boost_interthreads/reference.html#toward_boost_interthreads.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="toward_boost_interthreads/reference.html#toward_boost_interthreads.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="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>
+<dt><span class="section"><a href="toward_boost_interthreads/reference.html#toward_boost_interthreads.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="toward_boost_interthreads/reference.html#toward_boost_interthreads.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="toward_boost_interthreads/reference.html#toward_boost_interthreads.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>
 </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></dl></dd>
 <dt><span class="section">Appendices</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="toward_boost_interthreads/appendices/changes.html"> Appendix
+<dt><span class="section"><a href="toward_boost_interthreads/appendices.html#toward_boost_interthreads.appendices.changes">Appendix
       A: History</a></span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/appendices/rationale.html"> Appendix
+<dt><span class="section"><a href="toward_boost_interthreads/appendices.html#toward_boost_interthreads.appendices.rationale">Appendix
       B: Rationale</a></span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/appendices/implementation.html">
- Appendix C: Implementation Notes</a></span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/appendices/acknowledgements.html">
- Appendix D: Acknowledgments</a></span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/appendices/tests.html"> Appendix
+<dt><span class="section"><a href="toward_boost_interthreads/appendices.html#toward_boost_interthreads.appendices.implementation">Appendix
+ C: Implementation Notes</a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/appendices.html#toward_boost_interthreads.appendices.acknowledgements">Appendix
+ D: Acknowledgments</a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/appendices.html#toward_boost_interthreads.appendices.tests">Appendix
       E: Tests</a></span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/appendices/tickets.html"> Appendix
+<dt><span class="section"><a href="toward_boost_interthreads/appendices.html#toward_boost_interthreads.appendices.tickets">Appendix
       F: Tickets</a></span></dt>
-<dt><span class="section"><a href="toward_boost_interthreads/appendices/todo.html"> Appendix
- G: Future plans</a></span></dt>
+<dt><span class="section"><a href="toward_boost_interthreads/appendices.html#toward_boost_interthreads.appendices.todo">Appendix G:
+ Future plans</a></span></dt>
 </dl></dd>
 </dl>
 </div>
@@ -102,12 +101,9 @@
       Toward Boost.InterThreads is not a part of the Boost libraries.
     </p></td></tr>
 </table></div>
-<p>
- [/
- </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: January 16, 2011 at 09:25:40 GMT</small></p></td>
+<td align="left"><p><small>Last revised: February 16, 2011 at 00:18:47 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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,28 +1,5 @@
 index.html
 toward_boost_interthreads/overview.html
-toward_boost_interthreads/overview/motivation.html
 toward_boost_interthreads/users_guide.html
-toward_boost_interthreads/users_guide/getting_started.html
-toward_boost_interthreads/users_guide/tutorial.html
-toward_boost_interthreads/users_guide/bibliography.html
-toward_boost_interthreads/users_guide/glosary.html
 toward_boost_interthreads/reference.html
-toward_boost_interthreads/reference/concepts.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/appendices.html
-toward_boost_interthreads/appendices/changes.html
-toward_boost_interthreads/appendices/rationale.html
-toward_boost_interthreads/appendices/implementation.html
-toward_boost_interthreads/appendices/acknowledgements.html
-toward_boost_interthreads/appendices/tests.html
-toward_boost_interthreads/appendices/tickets.html
-toward_boost_interthreads/appendices/todo.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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,16 +1,12 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Appendices</title>
-<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../index.html" title="Toward Boost.InterThreads">
-<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">
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="up" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="prev" href="reference.html" title="Reference">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -23,69 +19,1924 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="examples/thread_safe_deferred_traces.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices/changes.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="toward_boost_interthreads.appendices"></a>Appendices
+<a name="toward_boost_interthreads.appendices"></a><a class="link" href="appendices.html" title="Appendices">Appendices</a>
 </h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="appendices/changes.html"> Appendix
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.changes">Appendix
       A: History</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="appendices/changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework"><span class="bold"><strong>Version 0.1.3, Mars 29, 2009</strong></span> Extraction of the Asynchonous
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework"><span class="bold"><strong>Version 0.1.3, Mars 29, 2009</strong></span> Extraction of the Asynchonous
         Executor framework</a></span></dt>
-<dt><span class="section">Version 0.1.2, February 8, 2009 Bug fixes</span></dt>
-<dt><span class="section"><a href="appendices/changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets"><span class="bold"><strong>Version 0.1.1, January 14, 2009</strong></span> Bug fixes and test
+<dt><span class="section">Version 0.1.2, February 8, 2009 Bug fixes</span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets"><span class="bold"><strong>Version 0.1.1, January 14, 2009</strong></span> Bug fixes and test
         on more toolsets</a></span></dt>
-<dt><span class="section"><a href="appendices/changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_"><span class="bold"><strong>Version 0.1.0, November 30, 2008</strong></span> <span class="emphasis"><em>Announcement
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_"><span class="bold"><strong>Version 0.1.0, November 30, 2008</strong></span> <span class="emphasis"><em>Announcement
         of Interthreads</em></span></a></span></dt>
-<dt><span class="section">Bugs</span></dt>
+<dt><span class="section">Bugs</span></dt>
 </dl></dd>
-<dt><span class="section"><a href="appendices/rationale.html"> Appendix
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale">Appendix
       B: Rationale</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="appendices/rationale.html#toward_boost_interthreads.appendices.rationale.thread_decorator">Thread
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale.decorator">Thread
         Decorator</a></span></dt>
-<dt><span class="section"><a href="appendices/rationale.html#toward_boost_interthreads.appendices.rationale.thread_specific_storage">Thread
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale.tss">Thread
         Specific Storage</a></span></dt>
-<dt><span class="section"><a href="appendices/rationale.html#toward_boost_interthreads.appendices.rationale.keep_alive">Keep
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale.ka">Keep
         Alive</a></span></dt>
-<dt><span class="section"><a href="appendices/rationale.html#toward_boost_interthreads.appendices.rationale.thread_tuple">Thread
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale.tuple">Thread
         Tuple</a></span></dt>
 </dl></dd>
-<dt><span class="section"><a href="appendices/implementation.html">
- Appendix C: Implementation Notes</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation">Appendix
+ C: Implementation Notes</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="appendices/implementation.html#toward_boost_interthreads.appendices.implementation.thread_decorator">Thread
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_decorator">Thread
         Decorator</a></span></dt>
-<dt><span class="section"><a href="appendices/implementation.html#toward_boost_interthreads.appendices.implementation.thread_specific_storage">Thread
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_specific_storage">Thread
         Specific Storage</a></span></dt>
-<dt><span class="section"><a href="appendices/implementation.html#toward_boost_interthreads.appendices.implementation.keep_alive">Keep
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation.keep_alive">Keep
         Alive</a></span></dt>
-<dt><span class="section"><a href="appendices/implementation.html#toward_boost_interthreads.appendices.implementation.thread_tuple">Thread
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_tuple">Thread
         Tuple</a></span></dt>
 </dl></dd>
-<dt><span class="section"><a href="appendices/acknowledgements.html">
- Appendix D: Acknowledgments</a></span></dt>
-<dt><span class="section"><a href="appendices/tests.html"> Appendix
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.acknowledgements">Appendix
+ D: Acknowledgments</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.tests">Appendix
       E: Tests</a></span></dt>
-<dd><dl><dt><span class="section">thread_specific_shared_pointer</span></dt></dl></dd>
-<dt><span class="section"><a href="appendices/tickets.html"> Appendix
+<dd><dl><dt><span class="section">thread_specific_shared_pointer</span></dt></dl></dd>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.tickets">Appendix
       F: Tickets</a></span></dt>
-<dt><span class="section"><a href="appendices/todo.html"> Appendix
- G: Future plans</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.todo">Appendix G:
+ Future plans</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="appendices/todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review">Tasks
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review">Tasks
         to do before review</a></span></dt>
-<dt><span class="section"><a href="appendices/todo.html#toward_boost_interthreads.appendices.todo.for_later_releases">For
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.todo.for_later_releases">For
         later releases</a></span></dt>
 </dl></dd>
 </dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.appendices.changes"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.changes" title="Appendix A: History">Appendix
+ A: History</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework"><span class="bold"><strong>Version 0.1.3, Mars 29, 2009</strong></span> Extraction of the Asynchonous
+ Executor framework</a></span></dt>
+<dt><span class="section">Version 0.1.2, February 8, 2009 Bug fixes</span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets"><span class="bold"><strong>Version 0.1.1, January 14, 2009</strong></span> Bug fixes and test
+ on more toolsets</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_"><span class="bold"><strong>Version 0.1.0, November 30, 2008</strong></span> <span class="emphasis"><em>Announcement
+ of Interthreads</em></span></a></span></dt>
+<dt><span class="section">Bugs</span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework" title="Version 0.1.3, Mars 29, 2009 Extraction of the Asynchonous Executor framework"><span class="bold"><strong>Version 0.1.3, Mars 29, 2009</strong></span> Extraction of the Asynchonous
+ Executor framework</a>
+</h4></div></div></div>
+<p>
+ <span class="bold"><strong>New Features:</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ Extraction of the Asynchonous Executor framework
+ </li></ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.changes.__version_0_1_2__february_8__2009__bug_fixes"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_2__february_8__2009__bug_fixes" title="Version 0.1.2, February 8, 2009 Bug fixes"><span class="bold"><strong>Version 0.1.2, February 8, 2009</strong></span> Bug fixes</a>
+</h4></div></div></div>
+<p>
+ <span class="bold"><strong>Fixed Bugs:</strong></span>
+ </p>
+<p>
+ <span class="bold"><strong>v0.3.1#1: keep alive mechanism crash when setting
+ <code class="computeroutput"><span class="identifier">set_on_dead_thread</span><span class="special">()</span></code>
+ before enabling the mechanism.</strong></span> This was due to the fact that
+ there were no default data for the backup.
+ </p>
+<p>
+ <span class="bold"><strong>v0.3.1#2: keep alive mechanism do not detect dead
+ threads.</strong></span> We need to reset the counters only when the period
+ is 0.
+ </p>
+<p>
+ <span class="bold"><strong>v0.3.1#3: The <code class="computeroutput"><span class="identifier">set_on_dead_thread</span><span class="special">()</span></code> setting is not recovered by embeeding
+ kep_alive enablers/disablers.</strong></span> The problem is that the <code class="computeroutput"><span class="identifier">on_dead</span><span class="special">()</span></code>
+ the function and the thread pointer were stored on the backup. It is enough
+ to store them on the <code class="computeroutput"><span class="identifier">thread_keep_alive_ctx</span></code>
+ and make the functions thread_safe.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets" title="Version 0.1.1, January 14, 2009 Bug fixes and test on more toolsets"><span class="bold"><strong>Version 0.1.1, January 14, 2009</strong></span> Bug fixes and test
+ on more toolsets</a>
+</h4></div></div></div>
+<p>
+ <span class="bold"><strong>Toolsets:</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Tested on Linux gcc 3.4.6.
+ </li>
+<li class="listitem">
+ Tested on Linux gcc 4.1.2.
+ </li>
+<li class="listitem">
+ Modification helping Windows (not tested)
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Fixed Bugs:</strong></span>
+ </p>
+<p>
+ <span class="bold"><strong>v0.1#1: basic_keep_alive example do not link.</strong></span>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_" title="Version 0.1.0, November 30, 2008 Announcement of Interthreads"><span class="bold"><strong>Version 0.1.0, November 30, 2008</strong></span> <span class="emphasis"><em>Announcement
+ of Interthreads</em></span></a>
+</h4></div></div></div>
+<p>
+ <span class="bold"><strong>Features:</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">thread_decorator</span></code> setup/cleanup
+ thread decorator,
+ </li>
+<li class="listitem">
+ thread specific shared pointer,
+ </li>
+<li class="listitem">
+ thread keep alive mechanism,
+ </li>
+<li class="listitem">
+ thread tuples, set_once synchonizer, thread_tuple_once and thread_group_once.
+ </li>
+</ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.changes.__bugs_"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.changes.__bugs_" title="Bugs"><span class="bold"><strong>Bugs</strong></span></a>
+</h4></div></div></div>
+<a name="toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__open_bugs___emphasis_"></a><h6>
+<a name="id3061844"></a>
+ <a class="link" href="appendices.html#toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__open_bugs___emphasis_"><span class="bold"><strong>Open Bugs:</strong></span></a>
+ </h6>
+<a name="toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__fixed_bugs___emphasis_"></a><h6>
+<a name="id3061872"></a>
+ <a class="link" href="appendices.html#toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__fixed_bugs___emphasis_"><span class="bold"><strong>Fixed Bugs:</strong></span></a>
+ </h6>
+<p>
+ <span class="bold"><strong>v0.1.1#1: keep alive mechanism crash when setting
+ set_on_dead_thread before enabling the mechanism.</strong></span> This was due
+ to the fact that there were no default data for the backup.
+ </p>
+<p>
+ <span class="bold"><strong>v0.1.1#2: keep alive mechanism do not detect dead
+ threads.</strong></span> We need to reste the counters only when the period
+ is 0.
+ </p>
+<p>
+ <span class="bold"><strong>v0.1.1#3: The set_on_dead_thread setting is not recovered
+ by embeeding enablers/disablers.</strong></span> The problem is that the on_dead
+ and th thread pointer were stored on the backup. It is enough to store
+ them on the
+ </p>
+<p>
+ <span class="bold"><strong>v0.1#1: basic_keep_alive example do not link.</strong></span>
+ </p>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.appendices.rationale"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.rationale" title="Appendix B: Rationale">Appendix
+ B: Rationale</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale.decorator">Thread
+ Decorator</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale.tss">Thread
+ Specific Storage</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale.ka">Keep
+ Alive</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.rationale.tuple">Thread
+ Tuple</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.rationale.decorator"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.rationale.decorator" title="Thread Decorator">Thread
+ Decorator</a>
+</h4></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Function wrapper versus thread refinement</span></dt>
+<dd><p>
+ The threadalert on which this library was initialy based redefined
+ the boost:thread class which called implicitly the wrapper. As the
+ single varying features between both threads was this wrapping of
+ the thread function it has been isolated in the interthreads library.
+ </p></dd>
+<dt><span class="term">Static decoration variables</span></dt>
+<dd><p>
+ Thread decorations construction is not thread safe and must be done
+ before other threads have been created and the <code class="computeroutput"><span class="identifier">decorate</span><span class="special">()</span></code> function is called.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.rationale.tss"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.rationale.tss" title="Thread Specific Storage">Thread
+ Specific Storage</a>
+</h4></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Non copiable/Non movable</span></dt>
+<dd><p>
+ Specific pointers are singletons.
+ </p></dd>
+<dt><span class="term">External locking</span></dt>
+<dd><p>
+ In order to ensure thread safety while providing as much functionality
+ as possible the class allows to get the map of thread specific contexts
+ as soon as the application provides a <code class="computeroutput"><span class="identifier">unique_lock</span></code>.
+ </p></dd>
+<dt><span class="term">Mimic thread_specific_ptr</span></dt>
+<dd>
+<p>
+ From the point of view of the current thread thread_specific_shared_ptr
+ behaves as a thread_specific_ptr. From it we takes:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><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="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>
+</pre>
+<p>
+ </p>
+</dd>
+<dt><span class="term">Mimic shared_ptr</span></dt>
+<dd>
+<p>
+ From the point of view of the other threads thread_specific_shared_ptr
+ behaves as a shared_ptr lockup. From the point of view of the current
+ thread the stored pointer is located in a shared_pointer, so we can
+ use the shared_ptr deleter feature From shared_ptr takes:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><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>
+</pre>
+<p>
+ </p>
+</dd>
+<dt><span class="term">Why doesn't thread_specific_shared_ptr provide a release() function?</span></dt>
+<dd><p>
+ As it store a shared_ptr, it cannot give away ownership unless it's
+ unique() because the other copy will still destroy the object.
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_interthreads.appendices.rationale.tss._hcmp_tss_comparaing_tsss_and_tss"></a><h6>
+<a name="id3062782"></a>
+ <a class="link" href="appendices.html#toward_boost_interthreads.appendices.rationale.tss._hcmp_tss_comparaing_tsss_and_tss">:hcmp_tss
+ Comparaing TSSS and TSS</a>
+ </h6>
+<div class="table">
+<a name="toward_boost_interthreads.appendices.rationale.tss.tcmp_tss"></a><p class="title"><b>Table&#160;1.&#160;Comparaing TSSS and TSS</b></p>
+<div class="table-contents"><table class="table" summary="Comparaing TSSS and TSS">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Feature
+ </p>
+ </th>
+<th>
+ <p>
+ thread_specific_shared_ptr
+ </p>
+ </th>
+<th>
+ <p>
+ thread_specific_ptr
+ </p>
+ </th>
+<th>
+ <p>
+ Compatible
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ ownership
+ </p>
+ </td>
+<td>
+ <p>
+ shared
+ </p>
+ </td>
+<td>
+ <p>
+ exclusive
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cleanup constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>: can not delete the pointer
+ </p>
+ </td>
+<td>
+ <p>
+ yes:must delete the pointer
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">-&gt;()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">*()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">T</span><span class="special">*)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*,</span><span class="identifier">D</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*,</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">A</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">release</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get_mutex</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get_map</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">wait_and_get</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.rationale.ka"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.rationale.ka" title="Keep Alive">Keep
+ Alive</a>
+</h4></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Can a thread that has just do a check point be considered as dead
+ less than one second after?</span></dt>
+<dd><p>
+ Whell this depends on the enabling parameters. If the checking parameter
+ is greater than one it could be possible that the thread do a check_point
+ just before the keep alive manager do the check, seen that there
+ are not enough check_points and declaring the thread dead. If you
+ want to avoid this situation let the checkin to 1.
+ </p></dd>
+<dt><span class="term">Nesting enablers and disablers</span></dt>
+<dd><p>
+ Enablers/disablers use RAII, so they can be nested and the context
+ be restored on the destructor.
+ </p></dd>
+<dt><span class="term">Configurable on dead action</span></dt>
+<dd><p>
+ The default action is to abort the process because I don't see any
+ generic and cleaner way to manage this event. The library provides
+ this hook for user wanting to try something specific.
+ </p></dd>
+<dt><span class="term">Who control the controler?</span></dt>
+<dd><p>
+ There is no way to control this thread other than adding an external
+ process.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.rationale.tuple"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.rationale.tuple" title="Thread Tuple">Thread
+ Tuple</a>
+</h4></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Why must be not copiable?</span></dt>
+<dd><p>
+ Thread tuples can not be copiable since boost::thread is not copiable.
+ </p></dd>
+<dt><span class="term">Why should be movable?</span></dt>
+<dd><p>
+ If we want functions to return Thread tuples it is necessary to make
+ them movable.
+ </p></dd>
+<dt><span class="term">Mimic boost::thread_group</span></dt>
+<dd>
+<p>
+ thread_tuple has in common some function found in thread_group. From
+ it we take
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">join_all</span><span class="special">();</span>
+<span class="keyword">void</span> <span class="identifier">interrupt_all</span><span class="special">();</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+</dd>
+<dt><span class="term">Mimic boost::thread</span></dt>
+<dd>
+<p>
+ We can consider a thread tuple as a compound thread, and so we can
+ mimic the thread intyerface. From it we takes
+ </p>
+<p>
+
+</p>
+<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">interrupt</span><span class="special">();</span>
+<span class="keyword">void</span> <span class="identifier">detach</span><span class="special">/</span><span class="identifier">detach_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="keyword">void</span> <span class="identifier">timed_join</span><span class="special">/</span><span class="identifier">timed_join_all</span><span class="special">();</span>
+<span class="keyword">bool</span> <span class="identifier">joinable</span><span class="special">/</span><span class="identifier">all_joinable</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+</dd>
+<dt><span class="term">Why the user can not modify directly the embeeded threads?</span></dt>
+<dd>
+<p>
+ The library provides a safe function to get a constant thread reference
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><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="keyword">const</span><span class="special">;</span></pre>
+<p>
+ </p>
+<p>
+ The problem if we provide the non constant variant is that the user
+ can detach them.
+ </p>
+</dd>
+<dt><span class="term">Joining the first finishing thread of a thread tuple</span></dt>
+<dd><p>
+ This functionallity has a price. We need to synchronize all the threads
+ transparently, so we need to wrap the user thread functions.
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_interthreads.appendices.rationale.tuple._hcmp_thread_comparaing_thread__thread_group_and_thread_tuple"></a><h6>
+<a name="id3064259"></a>
+ <a class="link" href="appendices.html#toward_boost_interthreads.appendices.rationale.tuple._hcmp_thread_comparaing_thread__thread_group_and_thread_tuple">:hcmp_thread
+ Comparaing thread, thread_group and thread_tuple</a>
+ </h6>
+<div class="table">
+<a name="toward_boost_interthreads.appendices.rationale.tuple.tcmp_thread"></a><p class="title"><b>Table&#160;2.&#160;Comparaing thread, thread_group and thread_tuple</b></p>
+<div class="table-contents"><table class="table" summary="Comparaing thread, thread_group and thread_tuple">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Feature
+ </p>
+ </th>
+<th>
+ <p>
+ thread
+ </p>
+ </th>
+<th>
+ <p>
+ thread_group
+ </p>
+ </th>
+<th>
+ <p>
+ thread_tuple
+ </p>
+ </th>
+<th>
+ <p>
+ Compatible
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ copiable
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ movable
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">joinable</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no*
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no*
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no*
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">interruption_requested</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no*
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">timed_join_all</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no* *
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">join_first_then_interrupt</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no* * *
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">timed_join_first_then_interrupt</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no* * *
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ no*
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">*</span></dt>
+<dd><p>
+ thread_group could add these synonym functions
+ </p></dd>
+<dt><span class="term">* *</span></dt>
+<dd><p>
+ thread could add the size function returning 1
+ </p></dd>
+<dt><span class="term">* * *</span></dt>
+<dd><p>
+ thread &amp; thread_group could add these functions
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.appendices.implementation"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.implementation" title="Appendix C: Implementation Notes">Appendix
+ C: Implementation Notes</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_decorator">Thread
+ Decorator</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_specific_storage">Thread
+ Specific Storage</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation.keep_alive">Keep
+ Alive</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_tuple">Thread
+ Tuple</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.implementation.thread_decorator"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_decorator" title="Thread Decorator">Thread
+ Decorator</a>
+</h4></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Thread safe</span></dt>
+<dd><p>
+ The library is thread safe as far as the thread decorations are declared
+ staticaly, because these variables will be initialized sequentially.
+ </p></dd>
+<dt><span class="term">Chained thread decorations</span></dt>
+<dd><p>
+ All the thread decorations are chained between them.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.implementation.thread_specific_storage"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_specific_storage" title="Thread Specific Storage">Thread
+ Specific Storage</a>
+</h4></div></div></div>
+<p>
+ The Thread-Specific Storage pattern can be implemented in various ways
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">External versus internal thread storage</span></dt>
+<dd><p>
+ The thread specific data collections can be stored either externally
+ to all threads or internally to each thread. The thread_specific_shared_ptr
+ use both ensuring efficiency when the context is requested by the
+ current thread and allowing threads to access thread specific pointer
+ of other threads
+ </p></dd>
+<dt><span class="term">Fixed- vs. variable-sized thread specific key mapping</span></dt>
+<dd><p>
+ This library is based on the the Boost.Thread thread_specific_ptr
+ implementation which use a variable-size map indexed by the address
+ of the object. Future releases will provide fixed and mixed keys.
+ </p></dd>
+<dt><span class="term">Fixed- vs. variable-sized mapping of thread IDs to thread specific
+ pointers</span></dt>
+<dd><p>
+ It may be impractical to have a fixed-size array with an entry for
+ every possible thread ID value. Instead, it is more space efficient
+ to have threads use a dynamic data structure to map thread IDs to
+ thread specific pointers.
+ </p></dd>
+<dt><span class="term">One mapping of thread IDs to thread specific pointers or to thread
+ specific key mapping</span></dt>
+<dd><p>
+ This library maps thread IDs to thread specific pointers to avoid
+ contention on a single map.
+ </p></dd>
+<dt><span class="term">Default versus explicit specific context setting</span></dt>
+<dd><p>
+ This library provides explicit setting. In future release will provide
+ explicit/eager and implicit/lazy specific context setting. Note that
+ implicit setting will need a factory or a default constructible type.
+ </p></dd>
+<dt><span class="term">Ordered or unordered map</span></dt>
+<dd><p>
+ While the thread::id type is ordered, there is no need to use it.
+ The current implementation use an ordered map. Future version will
+ allow the user to configure this.
+ </p></dd>
+<dt><span class="term">Intrusive or not maps</span></dt>
+<dd><p>
+ As the thread specific pointer is stored on only one map the implementation
+ could use an intrusive container. This will be provided in future
+ releases
+ </p></dd>
+<dt><span class="term">Shared versus exclusive locking</span></dt>
+<dd><p>
+ Locating the right TS pointer requires the use of mutex to prevent
+ race conditions. The library use a a shared_mutex because most of
+ the access to the map will be readings by other threads. The problem
+ is that the native conditions can not be used directly with shared
+ mutex. Some benchmarks will be needed before decidinf which implementation
+ is the best.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.implementation.keep_alive"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.implementation.keep_alive" title="Keep Alive">Keep
+ Alive</a>
+</h4></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Ensuring keep alive manager singleton is initialized and the thread
+ specific shared storage is set before use</span></dt>
+<dd><p>
+ The use of the thread decoration ensures that the decoration are
+ called before the user thread function is called. The keep_alive
+ decoration use the call_once to ensure that the keep_alive manager
+ is correctly initialized.
+ </p></dd>
+<dt><span class="term">backup/restore context</span></dt>
+<dd><p>
+ The real thread specific data is stored directly on the stack of
+ enablers/disablers avoiding heap memory. On enablers/disablers construction
+ they store a backup pointer to the nesting context. This allows a
+ quick restore. The keep alive pointer contains just a pointer to
+ this data.
+ </p></dd>
+</dl>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.implementation.thread_tuple"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.implementation.thread_tuple" title="Thread Tuple">Thread
+ Tuple</a>
+</h4></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Joining the first finishing thread</span></dt>
+<dd><p>
+ In order to synchronize the end of all the threads the libarry use
+ a internal class which stores the index of the first thread notifying
+ that it is finished. As the user function has no idea of this index
+ we need to wrap the user thread functions.
+ </p></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.appendices.acknowledgements"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.acknowledgements" title="Appendix D: Acknowledgments">Appendix
+ D: Acknowledgments</a>
+</h3></div></div></div>
+<p>
+ Part of this library (thread_decorator and thread_specific_shared_ptr) are
+ based on the original implementation of threadalert written by Roland Schwarz (thread::init
+ and thread_member_ptr). Many Thanks to Roland that allowed me to adapt his
+ implementation.
+ </p>
+<p>
+ Thanks also must go to Jochen Heckl for the ideas given respect to the thread_tuple::wait_first
+ implementation.
+ </p>
+<p>
+ You can help me to make this library better! Any feedback is very welcome.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.appendices.tests"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.tests" title="Appendix E: Tests">Appendix
+ E: Tests</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section">thread_specific_shared_pointer</span></dt></dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.tests.thread_specific_shared_pointer"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.tests.thread_specific_shared_pointer" title="thread_specific_shared_pointer">thread_specific_shared_pointer</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup></colgroup>
+<tbody></tbody>
+</table></div>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.appendices.tickets"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.tickets" title="Appendix F: Tickets">Appendix
+ F: Tickets</a>
+</h3></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Kind
+ </p>
+ </th>
+<th>
+ <p>
+ Identifier
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Resolution
+ </p>
+ </th>
+<th>
+ <p>
+ State
+ </p>
+ </th>
+<th>
+ <p>
+ Tests
+ </p>
+ </th>
+<th>
+ <p>
+ Version
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ bug
+ </p>
+ </td>
+<td>
+ <p>
+ v0.1#1
+ </p>
+ </td>
+<td>
+ <p>
+ basic_keep_alive example do not link
+ </p>
+ </td>
+<td>
+ <p>
+ Add to the link
+ </p>
+ </td>
+<td>
+ <p>
+ Closed
+ </p>
+ </td>
+<td>
+ <p>
+ See basic_keep_alive.cpp example
+ </p>
+ </td>
+<td>
+ <p>
+ v0.2
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ bug
+ </p>
+ </td>
+<td>
+ <p>
+ v0.1.1#1
+ </p>
+ </td>
+<td>
+ <p>
+ keep alive mechanism crash when setting set_on_dead_thread before
+ enabling the mechanism
+ </p>
+ </td>
+<td>
+ <p>
+ This was due to the fact that there were no default data for the
+ backup.
+ </p>
+ </td>
+<td>
+ <p>
+ Closed
+ </p>
+ </td>
+<td>
+ <p>
+ See basic_keep_alive.cpp example
+ </p>
+ </td>
+<td>
+ <p>
+ v0.4
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ bug
+ </p>
+ </td>
+<td>
+ <p>
+ v0.1.1#2
+ </p>
+ </td>
+<td>
+ <p>
+ keep alive mechanism do not detect dead threads
+ </p>
+ </td>
+<td>
+ <p>
+ We need to reset the counters only when the period is 0.
+ </p>
+ </td>
+<td>
+ <p>
+ Closed
+ </p>
+ </td>
+<td>
+ <p>
+ See basic_keep_alive.cpp example
+ </p>
+ </td>
+<td>
+ <p>
+ v0.4
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ bug
+ </p>
+ </td>
+<td>
+ <p>
+ v0.1.1#3
+ </p>
+ </td>
+<td>
+ <p>
+ The set_on_dead_thread setting is not recovered by embeeding enablers/disablers
+ </p>
+ </td>
+<td>
+ <p>
+ The problem is that the on_dead and th thread pointer were stored
+ on the backup. It is enough to store them on the
+ </p>
+ </td>
+<td>
+ <p>
+ Closed
+ </p>
+ </td>
+<td>
+ <p>
+ See basic_keep_alive.cpp example
+ </p>
+ </td>
+<td>
+ <p>
+ v0.4
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ bug
+ </p>
+ </td>
+<td>
+ <p>
+ v0.2.0#1
+ </p>
+ </td>
+<td>
+ <p>
+ xxx
+ </p>
+ </td>
+<td>
+ <p>
+ xx
+ </p>
+ </td>
+<td>
+ <p>
+ Open
+ </p>
+ </td>
+<td>
+ <p>
+ xxx
+ </p>
+ </td>
+<td>
+ <p>
+ v0.4.1
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.appendices.todo"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.todo" title="Appendix G: Future plans">Appendix G:
+ Future plans</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review">Tasks
+ to do before review</a></span></dt>
+<dt><span class="section"><a href="appendices.html#toward_boost_interthreads.appendices.todo.for_later_releases">For
+ later releases</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review" title="Tasks to do before review">Tasks
+ to do before review</a>
+</h4></div></div></div>
+<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.complete_the_tests"></a><h6>
+<a name="id3066297"></a>
+ <a class="link" href="appendices.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.complete_the_tests">Complete
+ the tests</a>
+ </h6>
+<p>
+ Even if the current release include some test there is yet a long way before
+ been able to review the library.]]
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ change the test so they take less time using locks; conditions and
+ variables.
+ </li>
+<li class="listitem">
+ Add test with functions throwing
+ </li>
+<li class="listitem">
+ Formalize the tests for thread_decoratoor
+ </li>
+<li class="listitem">
+ Formalize the tests for thread_specific_shared_ptr
+ </li>
+<li class="listitem">
+ Add tests for keep alive mechanism
+ </li>
+</ul></div>
+<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.add_more_examples"></a><h6>
+<a name="id3066370"></a>
+ <a class="link" href="appendices.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.add_more_examples">Add
+ more examples</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Complete the STM example.
+ </li>
+<li class="listitem">
+ Change the implementation of the file on the async_ostream.
+ </li>
+</ul></div>
+<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.change_the_rational_and_implementation_sections"></a><h6>
+<a name="id3066414"></a>
+ <a class="link" href="appendices.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.change_the_rational_and_implementation_sections">Change
+ the rational and implementation sections</a>
+ </h6>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.appendices.todo.for_later_releases"></a><a class="link" href="appendices.html#toward_boost_interthreads.appendices.todo.for_later_releases" title="For later releases">For
+ 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><h6>
+<a name="id3066456"></a>
+ <a class="link" href="appendices.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>
+ </h6>
+<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><h6>
+<a name="id3066486"></a>
+ <a class="link" href="appendices.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>
+ </h6>
+<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><h6>
+<a name="id3066516"></a>
+ <a class="link" href="appendices.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>
+ </h6>
+<a name="toward_boost_interthreads.appendices.todo.for_later_releases.add_a_daemon_controlling_all_the_keep_alive_controller_threads"></a><h6>
+<a name="id3066547"></a>
+ <a class="link" href="appendices.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>
+ </h6>
+<p>
+ This daemon will send regular keep_alive messages and kill the process
+ when dead.
+ </p>
+<a name="toward_boost_interthreads.appendices.todo.for_later_releases.optimize_the_tsss_maps_using_intrusive_containers"></a><h6>
+<a name="id3066584"></a>
+ <a class="link" href="appendices.html#toward_boost_interthreads.appendices.todo.for_later_releases.optimize_the_tsss_maps_using_intrusive_containers">Optimize
+ the TSSS maps using intrusive containers</a>
+ </h6>
+<a name="toward_boost_interthreads.appendices.todo.for_later_releases.generalize_both_specific_pointers_in_a_template_class_basic_thread_specific_ptr"></a><h6>
+<a name="id3066606"></a>
+ <a class="link" href="appendices.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>
+ </h6>
+<p>
+ <span class="bold"><strong>Domain Features</strong></span>
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">ownership: exclusive/shared</span></dt>
+<dd><p>
+ Specifies if the pointer is exclusive to the thread or shared with
+ other threads.
+ </p></dd>
+<dt><span class="term">key range: fixed/variable/mixed </span></dt>
+<dd><p>
+ Specifies how the key range is defined. fixed has an integer range
+ 0..n, variable takes as key the address of the specific_ptr and mixed
+ use a variant of fixed or variable key.
+ </p></dd>
+<dt><span class="term">key creation: eager/lazy</span></dt>
+<dd><p>
+ Specifies how the key is created, eager at construction time, lazy
+ when needed.
+ </p></dd>
+<dt><span class="term">context setting: eager/lazy</span></dt>
+<dd><p>
+ Specifies how the pointer is set, eager at thread initialization
+ time, lazy when needed.
+ </p></dd>
+</dl>
+</div>
+<p>
+ The current <code class="computeroutput"><span class="identifier">thread_specific_ptr</span></code>
+ is exclusive, has a variable key range and so the key is initialized at
+ construction time and explicit context setting by user on the current thread.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">basic_thread_specific_ptr</span><span class="special">&lt;</span><span class="identifier">exclusive</span><span class="special">,</span> <span class="identifier">variable_key_range</span><span class="special">&lt;&gt;,</span> <span class="identifier">eager_context_setting</span><span class="special">&gt;</span> <span class="identifier">thread_specific_ptr</span><span class="special">;</span>
+</pre>
+<p>
+ The current <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span></code>
+ is shared, has a variable key range and so the key is initialized at construction
+ time and explicit context setting by user on the current thread.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">basic_thread_specific_ptr</span><span class="special">&lt;</span><span class="identifier">exclusive</span><span class="special">,</span> <span class="identifier">variable_key_range</span><span class="special">&lt;&gt;,</span> <span class="identifier">eager_context_setting</span><span class="special">&gt;</span> <span class="identifier">thread_specific_ptr</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Design rationale</strong></span>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_ptr</span></code> uses as key the address
+ of the variable. This has as consequence that the mapping from keys to
+ the thread specific context pointer is much less efficient that the direct
+ access provided by some implementations. In this concern this library would
+ try to improve the performance to this mapping providing direct access
+ keys. As the number of direct access keys must be know at compile time
+ this has a limit on the number of thread specific pointers. A mixed approach
+ would be also provided in which the key could be a fixed one or a variable
+ one. It is up to the user to give an hint of the key sort. When using fixed
+ or mixed keys, there is decision to take related to when the key is created,
+ i.e. eager before the threads starts or lazy when we need it.
+ </p>
+<p>
+ Non-portable: The interfaces of POSIX Pthreads, Solaris threads, and Win32
+ threads are very similar. However, the semantics of Win32 threads are subtly
+ different since they do not provide a reliable means of cleaning up objects
+ allocated in thread-specific storage when a thread exits. Moreover, there
+ is no API to delete a key in Solaris threads. This makes it hard to write
+ portable code among UNIX and Win32 platforms.
+ </p>
+<p>
+ So we need to implement it on top of the underlying OS. The idea is to
+ take a native thread specific pointer which will manage with the fixed,
+ variable and mixed keys. This exactly the approach of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_ptr</span></code>
+ but only for variable keys.
+ </p>
+<p>
+ Just to finish, we need to decide when the context is set, two possibilities:
+ the user sets explicitlly the context when it considers pertinent or the
+ context is created lazily the first time we try to get it. The first approach
+ has the liability that the user needs to ensure that the context is set
+ before get them, but when the context must be set before the function thread
+ starts this is a no issue. The second is safe but has as consequence that
+ every access include a check. In addition the type must be default constructible.
+ </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">,</span> <span class="identifier">lazy_setting</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">;</span>
+</pre>
+<p>
+ The pointer will be initilaized when needed as if we had do
+ </p>
+<pre class="programlisting"><span class="keyword">if</span> <span class="special">(</span><span class="identifier">ptr</span><span class="special">.</span><span class="identifier">get</span><span class="special">()==</span><span class="number">0</span><span class="special">)</span> <span class="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="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Between the features:
+ </p>
+<p>
+ Thread_specific key mapping optimization: Replace the Boost.Thread thread_specific_ptr
+ thread specific key mapping implementation by a mix of fixed/variable mapping
+ which will provide efficient access to the fixed keys and scalability with
+ the others keys.
+ </p>
+<p>
+ Configuration the fixed/variable/mixed key range, ordered/unordered map,
+ intrusive/extrusive map, shared/exclusive locking.
+ </p>
+</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 &#169; 2008 -2009 Vicente J. Botet Escriba<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2008 -2009,2011 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>
@@ -93,7 +1944,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="examples/thread_safe_deferred_traces.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices/changes.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
 </div>
 </body>
 </html>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/acknowledgements.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/acknowledgements.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/acknowledgements.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Appendix D: Acknowledgments</title>
+<title>Appendix D: Acknowledgments</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../appendices.html" title="Appendices">
-<link rel="prev" href="implementation.html" title="
- Appendix C: Implementation Notes">
-<link rel="next" href="tests.html" title=" Appendix
- E: Tests">
+<link rel="prev" href="implementation.html" title="Appendix C: Implementation Notes">
+<link rel="next" href="tests.html" title="Appendix E: Tests">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -26,11 +22,10 @@
 <div class="spirit-nav">
 <a accesskey="p" href="implementation.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tests.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.appendices.acknowledgements"></a><a href="acknowledgements.html" title="
- Appendix D: Acknowledgments">
- Appendix D: Acknowledgments</a>
+<a name="toward_boost_interthreads.appendices.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Appendix D: Acknowledgments">Appendix
+ D: Acknowledgments</a>
 </h3></div></div></div>
 <p>
         Part of this library (thread_decorator and thread_specific_shared_ptr) are

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,16 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Appendix
- A: History</title>
+<title>Appendix A: History</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../appendices.html" title="Appendices">
 <link rel="prev" href="../appendices.html" title="Appendices">
-<link rel="next" href="rationale.html" title=" Appendix
- B: Rationale">
+<link rel="next" href="rationale.html" title="Appendix B: Rationale">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -25,10 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../appendices.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.appendices.changes"></a><a href="changes.html" title=" Appendix
- A: History"> Appendix
+<a name="toward_boost_interthreads.appendices.changes"></a><a class="link" href="changes.html" title="Appendix A: History">Appendix
       A: History</a>
 </h3></div></div></div>
 <div class="toc"><dl>
@@ -41,22 +37,21 @@
         of Interthreads</em></span></a></span></dt>
 <dt><span class="section">Bugs</span></dt>
 </dl></div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework"></a><a href="changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework" title="Version 0.1.3, Mars 29, 2009 Extraction of the Asynchonous
- Executor framework"><span class="bold"><strong>Version 0.1.3, Mars 29, 2009</strong></span> Extraction of the Asynchonous
+<a name="toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework"></a><a class="link" href="changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_3__mars_29__2009__extraction_of_the_asynchonous_executor_framework" title="Version 0.1.3, Mars 29, 2009 Extraction of the Asynchonous Executor framework"><span class="bold"><strong>Version 0.1.3, Mars 29, 2009</strong></span> Extraction of the Asynchonous
         Executor framework</a>
 </h4></div></div></div>
 <p>
           <span class="bold"><strong>New Features:</strong></span>
         </p>
-<div class="itemizedlist"><ul type="disc"><li>
- Extraction of the Asynchonous Executor framework
- </li></ul></div>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ Extraction of the Asynchonous Executor framework
+ </li></ul></div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.changes.__version_0_1_2__february_8__2009__bug_fixes"></a>Version 0.1.2, February 8, 2009 Bug fixes
+<a name="toward_boost_interthreads.appendices.changes.__version_0_1_2__february_8__2009__bug_fixes"></a><a class="link" href="changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_2__february_8__2009__bug_fixes" title="Version 0.1.2, February 8, 2009 Bug fixes"><span class="bold"><strong>Version 0.1.2, February 8, 2009</strong></span> Bug fixes</a>
 </h4></div></div></div>
 <p>
           <span class="bold"><strong>Fixed Bugs:</strong></span>
@@ -80,25 +75,24 @@
           and make the functions thread_safe.
         </p>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets"></a><a href="changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets" title="Version 0.1.1, January 14, 2009 Bug fixes and test
- on more toolsets"><span class="bold"><strong>Version 0.1.1, January 14, 2009</strong></span> Bug fixes and test
+<a name="toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets"></a><a class="link" href="changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_1__january_14__2009__bug_fixes_and_test_on_more_toolsets" title="Version 0.1.1, January 14, 2009 Bug fixes and test on more toolsets"><span class="bold"><strong>Version 0.1.1, January 14, 2009</strong></span> Bug fixes and test
         on more toolsets</a>
 </h4></div></div></div>
 <p>
           <span class="bold"><strong>Toolsets:</strong></span>
         </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- Tested on Linux gcc 3.4.6.
- </li>
-<li>
- Tested on Linux gcc 4.1.2.
- </li>
-<li>
- Modification helping Windows (not tested)
- </li>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Tested on Linux gcc 3.4.6.
+ </li>
+<li class="listitem">
+ Tested on Linux gcc 4.1.2.
+ </li>
+<li class="listitem">
+ Modification helping Windows (not tested)
+ </li>
 </ul></div>
 <p>
           <span class="bold"><strong>Fixed Bugs:</strong></span>
@@ -107,43 +101,42 @@
           <span class="bold"><strong>v0.1#1: basic_keep_alive example do not link.</strong></span>
         </p>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_"></a><a href="changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_" title="Version 0.1.0, November 30, 2008 Announcement
- of Interthreads"><span class="bold"><strong>Version 0.1.0, November 30, 2008</strong></span> <span class="emphasis"><em>Announcement
+<a name="toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_"></a><a class="link" href="changes.html#toward_boost_interthreads.appendices.changes.__version_0_1_0__november_30__2008____announcement_of_interthreads_" title="Version 0.1.0, November 30, 2008 Announcement of Interthreads"><span class="bold"><strong>Version 0.1.0, November 30, 2008</strong></span> <span class="emphasis"><em>Announcement
         of Interthreads</em></span></a>
 </h4></div></div></div>
 <p>
           <span class="bold"><strong>Features:</strong></span>
         </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
-<code class="computeroutput"><span class="identifier">thread_decorator</span></code> setup/cleanup
- thread decorator,
- </li>
-<li>
- thread specific shared pointer,
- </li>
-<li>
- thread keep alive mechanism,
- </li>
-<li>
- thread tuples, set_once synchonizer, thread_tuple_once and thread_group_once.
- </li>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">thread_decorator</span></code> setup/cleanup
+ thread decorator,
+ </li>
+<li class="listitem">
+ thread specific shared pointer,
+ </li>
+<li class="listitem">
+ thread keep alive mechanism,
+ </li>
+<li class="listitem">
+ thread tuples, set_once synchonizer, thread_tuple_once and thread_group_once.
+ </li>
 </ul></div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.changes.__bugs_"></a>Bugs
+<a name="toward_boost_interthreads.appendices.changes.__bugs_"></a><a class="link" href="changes.html#toward_boost_interthreads.appendices.changes.__bugs_" title="Bugs"><span class="bold"><strong>Bugs</strong></span></a>
 </h4></div></div></div>
-<a name="toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__open_bugs___emphasis_"></a><h5>
-<a name="id5034280"></a>
- Open Bugs:
- </h5>
-<a name="toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__fixed_bugs___emphasis_"></a><h5>
-<a name="id5034308"></a>
- Fixed Bugs:
- </h5>
+<a name="toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__open_bugs___emphasis_"></a><h6>
+<a name="id3232394"></a>
+ <a class="link" href="changes.html#toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__open_bugs___emphasis_"><span class="bold"><strong>Open Bugs:</strong></span></a>
+ </h6>
+<a name="toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__fixed_bugs___emphasis_"></a><h6>
+<a name="id3232422"></a>
+ <a class="link" href="changes.html#toward_boost_interthreads.appendices.changes.__bugs_._emphasis_role__bold__fixed_bugs___emphasis_"><span class="bold"><strong>Fixed Bugs:</strong></span></a>
+ </h6>
 <p>
           <span class="bold"><strong>v0.1.1#1: keep alive mechanism crash when setting
           set_on_dead_thread before enabling the mechanism.</strong></span> This was due

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/implementation.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/implementation.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/implementation.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Appendix C: Implementation Notes</title>
+<title>Appendix C: Implementation Notes</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../appendices.html" title="Appendices">
-<link rel="prev" href="rationale.html" title=" Appendix
- B: Rationale">
-<link rel="next" href="acknowledgements.html" title="
- Appendix D: Acknowledgments">
+<link rel="prev" href="rationale.html" title="Appendix B: Rationale">
+<link rel="next" href="acknowledgements.html" title="Appendix D: Acknowledgments">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -26,11 +22,10 @@
 <div class="spirit-nav">
 <a accesskey="p" href="rationale.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.appendices.implementation"></a><a href="implementation.html" title="
- Appendix C: Implementation Notes">
- Appendix C: Implementation Notes</a>
+<a name="toward_boost_interthreads.appendices.implementation"></a><a class="link" href="implementation.html" title="Appendix C: Implementation Notes">Appendix
+ C: Implementation Notes</a>
 </h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="implementation.html#toward_boost_interthreads.appendices.implementation.thread_decorator">Thread
@@ -42,10 +37,9 @@
 <dt><span class="section"><a href="implementation.html#toward_boost_interthreads.appendices.implementation.thread_tuple">Thread
         Tuple</a></span></dt>
 </dl></div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.implementation.thread_decorator"></a><a href="implementation.html#toward_boost_interthreads.appendices.implementation.thread_decorator" title="Thread
- Decorator">Thread
+<a name="toward_boost_interthreads.appendices.implementation.thread_decorator"></a><a class="link" href="implementation.html#toward_boost_interthreads.appendices.implementation.thread_decorator" title="Thread Decorator">Thread
         Decorator</a>
 </h4></div></div></div>
 <div class="variablelist">
@@ -53,20 +47,19 @@
 <dl>
 <dt><span class="term">Thread safe</span></dt>
 <dd><p>
- The library is thread safe as far as the thread decorations are declared
- staticaly, because these variables will be initialized sequentially.
- </p></dd>
+ The library is thread safe as far as the thread decorations are declared
+ staticaly, because these variables will be initialized sequentially.
+ </p></dd>
 <dt><span class="term">Chained thread decorations</span></dt>
 <dd><p>
- All the thread decorations are chained between them.
- </p></dd>
+ All the thread decorations are chained between them.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.implementation.thread_specific_storage"></a><a href="implementation.html#toward_boost_interthreads.appendices.implementation.thread_specific_storage" title="Thread
- Specific Storage">Thread
+<a name="toward_boost_interthreads.appendices.implementation.thread_specific_storage"></a><a class="link" href="implementation.html#toward_boost_interthreads.appendices.implementation.thread_specific_storage" title="Thread Specific Storage">Thread
         Specific Storage</a>
 </h4></div></div></div>
 <p>
@@ -77,94 +70,92 @@
 <dl>
 <dt><span class="term">External versus internal thread storage</span></dt>
 <dd><p>
- The thread specific data collections can be stored either externally
- to all threads or internally to each thread. The thread_specific_shared_ptr
- use both ensuring efficiency when the context is requested by the current
- thread and allowing threads to access thread specific pointer of other
- threads
- </p></dd>
-<dt><span class="term">Fixed- vs. variable-sized thread specific
- key mapping</span></dt>
-<dd><p>
- This library is based on the the Boost.Thread thread_specific_ptr implementation
- which use a variable-size map indexed by the address of the object.
- Future releases will provide fixed and mixed keys.
- </p></dd>
-<dt><span class="term">Fixed- vs. variable-sized mapping of
- thread IDs to thread specific pointers</span></dt>
-<dd><p>
- It may be impractical to have a fixed-size array with an entry for
- every possible thread ID value. Instead, it is more space efficient
- to have threads use a dynamic data structure to map thread IDs to thread
- specific pointers.
- </p></dd>
-<dt><span class="term">One mapping of thread IDs to thread
- specific pointers or to thread specific key mapping</span></dt>
-<dd><p>
- This library maps thread IDs to thread specific pointers to avoid contention
- on a single map.
- </p></dd>
-<dt><span class="term">Default versus explicit specific context
- setting</span></dt>
-<dd><p>
- This library provides explicit setting. In future release will provide
- explicit/eager and implicit/lazy specific context setting. Note that
- implicit setting will need a factory or a default constructible type.
- </p></dd>
+ The thread specific data collections can be stored either externally
+ to all threads or internally to each thread. The thread_specific_shared_ptr
+ use both ensuring efficiency when the context is requested by the
+ current thread and allowing threads to access thread specific pointer
+ of other threads
+ </p></dd>
+<dt><span class="term">Fixed- vs. variable-sized thread specific key mapping</span></dt>
+<dd><p>
+ This library is based on the the Boost.Thread thread_specific_ptr
+ implementation which use a variable-size map indexed by the address
+ of the object. Future releases will provide fixed and mixed keys.
+ </p></dd>
+<dt><span class="term">Fixed- vs. variable-sized mapping of thread IDs to thread specific
+ pointers</span></dt>
+<dd><p>
+ It may be impractical to have a fixed-size array with an entry for
+ every possible thread ID value. Instead, it is more space efficient
+ to have threads use a dynamic data structure to map thread IDs to
+ thread specific pointers.
+ </p></dd>
+<dt><span class="term">One mapping of thread IDs to thread specific pointers or to thread
+ specific key mapping</span></dt>
+<dd><p>
+ This library maps thread IDs to thread specific pointers to avoid
+ contention on a single map.
+ </p></dd>
+<dt><span class="term">Default versus explicit specific context setting</span></dt>
+<dd><p>
+ This library provides explicit setting. In future release will provide
+ explicit/eager and implicit/lazy specific context setting. Note that
+ implicit setting will need a factory or a default constructible type.
+ </p></dd>
 <dt><span class="term">Ordered or unordered map</span></dt>
 <dd><p>
- While the thread::id type is ordered, there is no need to use it. The
- current implementation use an ordered map. Future version will allow
- the user to configure this.
- </p></dd>
+ While the thread::id type is ordered, there is no need to use it.
+ The current implementation use an ordered map. Future version will
+ allow the user to configure this.
+ </p></dd>
 <dt><span class="term">Intrusive or not maps</span></dt>
 <dd><p>
- As the thread specific pointer is stored on only one map the implementation
- could use an intrusive container. This will be provided in future releases
- </p></dd>
+ As the thread specific pointer is stored on only one map the implementation
+ could use an intrusive container. This will be provided in future
+ releases
+ </p></dd>
 <dt><span class="term">Shared versus exclusive locking</span></dt>
 <dd><p>
- Locating the right TS pointer requires the use of mutex to prevent
- race conditions. The library use a a shared_mutex because most of the
- access to the map will be readings by other threads. The problem is
- that the native conditions can not be used directly with shared mutex.
- Some benchmarks will be needed before decidinf which implementation
- is the best.
- </p></dd>
+ Locating the right TS pointer requires the use of mutex to prevent
+ race conditions. The library use a a shared_mutex because most of
+ the access to the map will be readings by other threads. The problem
+ is that the native conditions can not be used directly with shared
+ mutex. Some benchmarks will be needed before decidinf which implementation
+ is the best.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.implementation.keep_alive"></a><a href="implementation.html#toward_boost_interthreads.appendices.implementation.keep_alive" title="Keep
- Alive">Keep
+<a name="toward_boost_interthreads.appendices.implementation.keep_alive"></a><a class="link" href="implementation.html#toward_boost_interthreads.appendices.implementation.keep_alive" title="Keep Alive">Keep
         Alive</a>
 </h4></div></div></div>
 <div class="variablelist">
 <p class="title"><b></b></p>
 <dl>
-<dt><span class="term">Ensuring keep alive manager singleton
- is initialized and the thread specific shared storage is set before use</span></dt>
+<dt><span class="term">Ensuring keep alive manager singleton is initialized and the thread
+ specific shared storage is set before use</span></dt>
 <dd><p>
- The use of the thread decoration ensures that the decoration are called
- before the user thread function is called. The keep_alive decoration
- use the call_once to ensure that the keep_alive manager is correctly
- initialized.
- </p></dd>
+ The use of the thread decoration ensures that the decoration are
+ called before the user thread function is called. The keep_alive
+ decoration use the call_once to ensure that the keep_alive manager
+ is correctly initialized.
+ </p></dd>
 <dt><span class="term">backup/restore context</span></dt>
 <dd><p>
- The real thread specific data is stored directly on the stack of enablers/disablers
- avoiding heap memory. On enablers/disablers construction they store
- a backup pointer to the nesting context. This allows a quick restore.
- The keep alive pointer contains just a pointer to this data.
- </p></dd>
+ The real thread specific data is stored directly on the stack of
+ enablers/disablers avoiding heap memory. On enablers/disablers construction
+ they store a backup pointer to the nesting context. This allows a
+ quick restore. The keep alive pointer contains just a pointer to
+ this data.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.implementation.thread_tuple"></a><a href="implementation.html#toward_boost_interthreads.appendices.implementation.thread_tuple" title="Thread
- Tuple">Thread
+<a name="toward_boost_interthreads.appendices.implementation.thread_tuple"></a><a class="link" href="implementation.html#toward_boost_interthreads.appendices.implementation.thread_tuple" title="Thread Tuple">Thread
         Tuple</a>
 </h4></div></div></div>
 <div class="variablelist">
@@ -172,11 +163,11 @@
 <dl>
 <dt><span class="term">Joining the first finishing thread</span></dt>
 <dd><p>
- In order to synchronize the end of all the threads the libarry use
- a internal class which stores the index of the first thread notifying
- that it is finished. As the user function has no idea of this index
- we need to wrap the user thread functions.
- </p></dd>
+ In order to synchronize the end of all the threads the libarry use
+ a internal class which stores the index of the first thread notifying
+ that it is finished. As the user function has no idea of this index
+ we need to wrap the user thread functions.
+ </p></dd>
 </dl>
 </div>
 </div>

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Appendix
- B: Rationale</title>
+<title>Appendix B: Rationale</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../appendices.html" title="Appendices">
-<link rel="prev" href="changes.html" title=" Appendix
- A: History">
-<link rel="next" href="implementation.html" title="
- Appendix C: Implementation Notes">
+<link rel="prev" href="changes.html" title="Appendix A: History">
+<link rel="next" href="implementation.html" title="Appendix C: Implementation Notes">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -26,10 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="changes.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="implementation.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.appendices.rationale"></a><a href="rationale.html" title=" Appendix
- B: Rationale"> Appendix
+<a name="toward_boost_interthreads.appendices.rationale"></a><a class="link" href="rationale.html" title="Appendix B: Rationale">Appendix
       B: Rationale</a>
 </h3></div></div></div>
 <div class="toc"><dl>
@@ -42,10 +37,9 @@
 <dt><span class="section"><a href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_tuple">Thread
         Tuple</a></span></dt>
 </dl></div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.rationale.thread_decorator"></a><a href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_decorator" title="Thread
- Decorator">Thread
+<a name="toward_boost_interthreads.appendices.rationale.thread_decorator"></a><a class="link" href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_decorator" title="Thread Decorator">Thread
         Decorator</a>
 </h4></div></div></div>
 <div class="variablelist">
@@ -53,23 +47,22 @@
 <dl>
 <dt><span class="term">Function wrapper versus thread refinement</span></dt>
 <dd><p>
- The threadalert on which this library was initialy based redefined
- the boost:thread class which called implicitly the wrapper. As the
- single varying features between both threads was this wrapping of the
- thread function it has been isolated in the interthreads library.
- </p></dd>
+ The threadalert on which this library was initialy based redefined
+ the boost:thread class which called implicitly the wrapper. As the
+ single varying features between both threads was this wrapping of
+ the thread function it has been isolated in the interthreads library.
+ </p></dd>
 <dt><span class="term">Static decoration variables</span></dt>
 <dd><p>
- Thread decorations construction is not thread safe and must be done
- before other threads have been created and the <code class="computeroutput"><span class="identifier">decorate</span><span class="special">()</span></code> function is called.
- </p></dd>
+ Thread decorations construction is not thread safe and must be done
+ before other threads have been created and the <code class="computeroutput"><span class="identifier">decorate</span><span class="special">()</span></code> function is called.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.rationale.thread_specific_storage"></a><a href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_specific_storage" title="Thread
- Specific Storage">Thread
+<a name="toward_boost_interthreads.appendices.rationale.thread_specific_storage"></a><a class="link" href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_specific_storage" title="Thread Specific Storage">Thread
         Specific Storage</a>
 </h4></div></div></div>
 <div class="variablelist">
@@ -77,25 +70,24 @@
 <dl>
 <dt><span class="term">Non copiable/Non movable</span></dt>
 <dd><p>
- Specific pointers are singletons.
- </p></dd>
+ Specific pointers are singletons.
+ </p></dd>
 <dt><span class="term">External locking</span></dt>
 <dd><p>
- In order to ensure thread safety while providing as much functionality
- as possible the class allows to get the map of thread specific contexts
- as soon as the application provides a <code class="computeroutput"><span class="identifier">unique_lock</span></code>.
- </p></dd>
+ In order to ensure thread safety while providing as much functionality
+ as possible the class allows to get the map of thread specific contexts
+ as soon as the application provides a <code class="computeroutput"><span class="identifier">unique_lock</span></code>.
+ </p></dd>
 <dt><span class="term">Mimic thread_specific_ptr</span></dt>
 <dd>
 <p>
- From the point of view of the current thread thread_specific_shared_ptr
- behaves as a thread_specific_ptr. From it we takes:
- </p>
+ From the point of view of the current thread thread_specific_shared_ptr
+ behaves as a thread_specific_ptr. From it we takes:
+ </p>
 <p>
-
+
 </p>
-<pre class="programlisting">
-<span class="identifier">thread_specific_shared_ptr</span><span class="special">();</span>
+<pre class="programlisting"><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="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>
@@ -104,21 +96,20 @@
 <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>
 </pre>
 <p>
- </p>
+ </p>
 </dd>
 <dt><span class="term">Mimic shared_ptr</span></dt>
 <dd>
 <p>
- From the point of view of the other threads thread_specific_shared_ptr
- behaves as a shared_ptr lockup. From the point of view of the current
- thread the stored pointer is located in a shared_pointer, so we can
- use the shared_ptr deleter feature From shared_ptr takes:
- </p>
+ From the point of view of the other threads thread_specific_shared_ptr
+ behaves as a shared_ptr lockup. From the point of view of the current
+ thread the stored pointer is located in a shared_pointer, so we can
+ use the shared_ptr deleter feature From shared_ptr takes:
+ </p>
 <p>
-
+
 </p>
-<pre class="programlisting">
-<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>
+<pre class="programlisting"><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>
@@ -127,24 +118,23 @@
 <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>
 </pre>
 <p>
- </p>
+ </p>
 </dd>
-<dt><span class="term">Why doesn't thread_specific_shared_ptr
- provide a release() function?</span></dt>
+<dt><span class="term">Why doesn't thread_specific_shared_ptr provide a release() function?</span></dt>
 <dd><p>
- As it store a shared_ptr, it cannot give away ownership unless it's
- unique() because the other copy will still destroy the object.
- </p></dd>
+ As it store a shared_ptr, it cannot give away ownership unless it's
+ unique() because the other copy will still destroy the object.
+ </p></dd>
 </dl>
 </div>
-<a name="toward_boost_interthreads.appendices.rationale.thread_specific_storage.comparaing_tsss_and_tss"></a><h5>
-<a name="id5035216"></a>
- <a href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_specific_storage.comparaing_tsss_and_tss">Comparaing
+<a name="toward_boost_interthreads.appendices.rationale.thread_specific_storage.comparaing_tsss_and_tss"></a><h6>
+<a name="id3233334"></a>
+ <a class="link" href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_specific_storage.comparaing_tsss_and_tss">Comparaing
           TSSS and TSS</a>
- </h5>
+ </h6>
 <div class="table">
-<a name="id5035232"></a><p class="title"><b>Table&#160;1.&#160;Comparaing TSSS and TSS</b></p>
-<table class="table" summary="Comparaing TSSS and TSS">
+<a name="toward_boost_interthreads.appendices.rationale.thread_specific_storage.comparaing_tsss_and_tss"></a><p class="title"><b>Table&#160;1.&#160;Comparaing TSSS and TSS</b></p>
+<div class="table-contents"><table class="table" summary="Comparaing TSSS and TSS">
 <colgroup>
 <col>
 <col>
@@ -153,424 +143,423 @@
 </colgroup>
 <thead><tr>
 <th>
- <p>
- Feature
- </p>
- </th>
+ <p>
+ Feature
+ </p>
+ </th>
 <th>
- <p>
- thread_specific_shared_ptr
- </p>
- </th>
+ <p>
+ thread_specific_shared_ptr
+ </p>
+ </th>
 <th>
- <p>
- thread_specific_ptr
- </p>
- </th>
+ <p>
+ thread_specific_ptr
+ </p>
+ </th>
 <th>
- <p>
- Compatible
- </p>
- </th>
+ <p>
+ Compatible
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
 <td>
- <p>
- ownership
- </p>
- </td>
+ <p>
+ ownership
+ </p>
+ </td>
 <td>
- <p>
- shared
- </p>
- </td>
+ <p>
+ shared
+ </p>
+ </td>
 <td>
- <p>
- exclusive
- </p>
- </td>
+ <p>
+ exclusive
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- default constructor
- </p>
- </td>
+ <p>
+ default constructor
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- cleanup constructor
- </p>
- </td>
+ <p>
+ cleanup constructor
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>: can not delete the pointer
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>: can not delete the pointer
+ </p>
+ </td>
 <td>
- <p>
- yes:must delete the pointer
- </p>
- </td>
+ <p>
+ yes:must delete the pointer
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="keyword">operator</span><span class="special">-&gt;()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">-&gt;()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="keyword">operator</span><span class="special">*()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">*()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">T</span><span class="special">*)</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">T</span><span class="special">*)</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*)</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*)</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*,</span><span class="identifier">D</span><span class="special">)</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*,</span><span class="identifier">D</span><span class="special">)</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*,</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">A</span><span class="special">)</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reset</span><span class="special">(</span><span class="identifier">Y</span><span class="special">*,</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">A</span><span class="special">)</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">release</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">release</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">get_mutex</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get_mutex</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">get_map</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get_map</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">wait_and_get</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">wait_and_get</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
+<br class="table-break">
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.rationale.keep_alive"></a><a href="rationale.html#toward_boost_interthreads.appendices.rationale.keep_alive" title="Keep
- Alive">Keep
+<a name="toward_boost_interthreads.appendices.rationale.keep_alive"></a><a class="link" href="rationale.html#toward_boost_interthreads.appendices.rationale.keep_alive" title="Keep Alive">Keep
         Alive</a>
 </h4></div></div></div>
 <div class="variablelist">
 <p class="title"><b></b></p>
 <dl>
-<dt><span class="term">Can a thread that has just do a check
- point be considered as dead less than one second after?</span></dt>
+<dt><span class="term">Can a thread that has just do a check point be considered as dead
+ less than one second after?</span></dt>
 <dd><p>
- Whell this depends on the enabling parameters. If the checking parameter
- is greater than one it could be possible that the thread do a check_point
- just before the keep alive manager do the check, seen that there are
- not enough check_points and declaring the thread dead. If you want
- to avoid this situation let the checkin to 1.
- </p></dd>
+ Whell this depends on the enabling parameters. If the checking parameter
+ is greater than one it could be possible that the thread do a check_point
+ just before the keep alive manager do the check, seen that there
+ are not enough check_points and declaring the thread dead. If you
+ want to avoid this situation let the checkin to 1.
+ </p></dd>
 <dt><span class="term">Nesting enablers and disablers</span></dt>
 <dd><p>
- Enablers/disablers use RAII, so they can be nested and the context
- be restored on the destructor.
- </p></dd>
+ Enablers/disablers use RAII, so they can be nested and the context
+ be restored on the destructor.
+ </p></dd>
 <dt><span class="term">Configurable on dead action</span></dt>
 <dd><p>
- The default action is to abort the process because I don't see any
- generic and cleaner way to manage this event. The library provides
- this hook for user wanting to try something specific.
- </p></dd>
+ The default action is to abort the process because I don't see any
+ generic and cleaner way to manage this event. The library provides
+ this hook for user wanting to try something specific.
+ </p></dd>
 <dt><span class="term">Who control the controler?</span></dt>
 <dd><p>
- There is no way to control this thread other than adding an external
- process.
- </p></dd>
+ There is no way to control this thread other than adding an external
+ process.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.rationale.thread_tuple"></a><a href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_tuple" title="Thread
- Tuple">Thread
+<a name="toward_boost_interthreads.appendices.rationale.thread_tuple"></a><a class="link" href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_tuple" title="Thread Tuple">Thread
         Tuple</a>
 </h4></div></div></div>
 <div class="variablelist">
@@ -578,43 +567,39 @@
 <dl>
 <dt><span class="term">Why must be not copiable?</span></dt>
 <dd><p>
- Thread tuples can not be copiable since boost::thread is not copiable.
- </p></dd>
+ Thread tuples can not be copiable since boost::thread is not copiable.
+ </p></dd>
 <dt><span class="term">Why should be movable?</span></dt>
 <dd><p>
- If we want functions to return Thread tuples it is necessary to make
- them movable.
- </p></dd>
+ If we want functions to return Thread tuples it is necessary to make
+ them movable.
+ </p></dd>
 <dt><span class="term">Mimic boost::thread_group</span></dt>
 <dd>
 <p>
- thread_tuple has in common some function found in thread_group. From
- it we take
- </p>
+ thread_tuple has in common some function found in thread_group. From
+ it we take
+ </p>
 <p>
-
+
 </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">join_all</span><span class="special">();</span>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">join_all</span><span class="special">();</span>
 <span class="keyword">void</span> <span class="identifier">interrupt_all</span><span class="special">();</span>
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">();</span>
 </pre>
 <p>
- </p>
-<p>
- </p>
+ </p>
 </dd>
 <dt><span class="term">Mimic boost::thread</span></dt>
 <dd>
 <p>
- We can consider a thread tuple as a compound thread, and so we can
- mimic the thread intyerface. From it we takes
- </p>
+ We can consider a thread tuple as a compound thread, and so we can
+ mimic the thread intyerface. From it we takes
+ </p>
 <p>
-
+
 </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">join</span><span class="special">();</span>
+<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">interrupt</span><span class="special">();</span>
 <span class="keyword">void</span> <span class="identifier">detach</span><span class="special">/</span><span class="identifier">detach_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>
@@ -622,48 +607,39 @@
 <span class="keyword">bool</span> <span class="identifier">joinable</span><span class="special">/</span><span class="identifier">all_joinable</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
 </pre>
 <p>
- </p>
-<p>
- </p>
+ </p>
 </dd>
-<dt><span class="term">Why the user can not modify directly
- the embeeded threads?</span></dt>
+<dt><span class="term">Why the user can not modify directly the embeeded threads?</span></dt>
 <dd>
 <p>
- </p>
-<p>
- The library provides a safe function to get a constant thread reference
- </p>
+ The library provides a safe function to get a constant thread reference
+ </p>
 <p>
-
+
 </p>
-<pre class="programlisting">
-<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="keyword">const</span><span class="special">;</span></pre>
+<pre class="programlisting"><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="keyword">const</span><span class="special">;</span></pre>
 <p>
- </p>
-<p>
- The problem if we provide the non constant variant is that the user
- can detach them.
- </p>
+ </p>
 <p>
- </p>
+ The problem if we provide the non constant variant is that the user
+ can detach them.
+ </p>
 </dd>
-<dt><span class="term">Joining the first finishing thread
- of a thread tuple</span></dt>
+<dt><span class="term">Joining the first finishing thread of a thread tuple</span></dt>
 <dd><p>
- This functionallity has a price. We need to synchronize all the threads
- transparently, so we need to wrap the user thread functions.
- </p></dd>
+ This functionallity has a price. We need to synchronize all the threads
+ transparently, so we need to wrap the user thread functions.
+ </p></dd>
 </dl>
 </div>
-<a name="toward_boost_interthreads.appendices.rationale.thread_tuple.comparaing_thread__thread_group_and_thread_tuple"></a><h5>
-<a name="id5036636"></a>
- <a href="rationale.html#toward_boost_interthreads.appendices.rationale.thread_tuple.comparaing_thread__thread_group_and_thread_tuple">Comparaing
+<a name="toward_boost_interthreads.appendices.rationale.thread_tuple.comparaing_thread__thread_group_and_thread_tuple"></a><h6>
+<a name="id3234827"></a>
+ <a class="link" 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>
+ </h6>
 <div class="table">
-<a name="id5036652"></a><p class="title"><b>Table&#160;2.&#160;Comparaing thread, thread_group and thread_tuple</b></p>
-<table class="table" summary="Comparaing thread, thread_group and thread_tuple">
+<a name="toward_boost_interthreads.appendices.rationale.thread_tuple.comparaing_thread__thread_group_and_thread_tuple"></a><p class="title"><b>Table&#160;2.&#160;Comparaing thread, thread_group and thread_tuple</b></p>
+<div class="table-contents"><table class="table" summary="Comparaing thread, thread_group and thread_tuple">
 <colgroup>
 <col>
 <col>
@@ -673,455 +649,455 @@
 </colgroup>
 <thead><tr>
 <th>
- <p>
- Feature
- </p>
- </th>
+ <p>
+ Feature
+ </p>
+ </th>
 <th>
- <p>
- thread
- </p>
- </th>
+ <p>
+ thread
+ </p>
+ </th>
 <th>
- <p>
- thread_group
- </p>
- </th>
+ <p>
+ thread_group
+ </p>
+ </th>
 <th>
- <p>
- thread_tuple
- </p>
- </th>
+ <p>
+ thread_tuple
+ </p>
+ </th>
 <th>
- <p>
- Compatible
- </p>
- </th>
+ <p>
+ Compatible
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
 <td>
- <p>
- default constructor
- </p>
- </td>
+ <p>
+ default constructor
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- copiable
- </p>
- </td>
+ <p>
+ copiable
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- movable
- </p>
- </td>
+ <p>
+ movable
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">joinable</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">joinable</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no*
- </p>
- </td>
+ <p>
+ no*
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">join</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no*
- </p>
- </td>
+ <p>
+ no*
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">timed_join</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no*
- </p>
- </td>
+ <p>
+ no*
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">interruption_requested</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">interruption_requested</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no*
- </p>
- </td>
+ <p>
+ no*
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">join_all</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">timed_join_all</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">timed_join_all</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">interrupt_all</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no* *
- </p>
- </td>
+ <p>
+ no* *
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">join_first_then_interrupt</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">join_first_then_interrupt</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no* * *
- </p>
- </td>
+ <p>
+ no* * *
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">timed_join_first_then_interrupt</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">timed_join_first_then_interrupt</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no* * *
- </p>
- </td>
+ <p>
+ no* * *
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code>
- </p>
- </td>
+ <p>
+ <code class="computeroutput"><span class="identifier">swap</span><span class="special">()</span></code>
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no
- </p>
- </td>
+ <p>
+ no
+ </p>
+ </td>
 <td>
- <p>
- <span class="bold"><strong>yes</strong></span>
- </p>
- </td>
+ <p>
+ <span class="bold"><strong>yes</strong></span>
+ </p>
+ </td>
 <td>
- <p>
- no*
- </p>
- </td>
+ <p>
+ no*
+ </p>
+ </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
-<div class="variablelist">
+<br class="table-break"><div class="variablelist">
 <p class="title"><b></b></p>
 <dl>
 <dt><span class="term">*</span></dt>
 <dd><p>
- thread_group could add these synonym functions
- </p></dd>
+ thread_group could add these synonym functions
+ </p></dd>
 <dt><span class="term">* *</span></dt>
 <dd><p>
- thread could add the size function returning 1
- </p></dd>
+ thread could add the size function returning 1
+ </p></dd>
 <dt><span class="term">* * *</span></dt>
 <dd><p>
- thread &amp; thread_group could add these functions
- </p></dd>
+ thread &amp; thread_group could add these functions
+ </p></dd>
 </dl>
 </div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/tests.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/tests.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/tests.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Appendix
- E: Tests</title>
+<title>Appendix E: Tests</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../appendices.html" title="Appendices">
-<link rel="prev" href="acknowledgements.html" title="
- Appendix D: Acknowledgments">
-<link rel="next" href="tickets.html" title=" Appendix
- F: Tickets">
+<link rel="prev" href="acknowledgements.html" title="Appendix D: Acknowledgments">
+<link rel="next" href="tickets.html" title="Appendix F: Tickets">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -26,16 +22,15 @@
 <div class="spirit-nav">
 <a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tickets.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.appendices.tests"></a><a href="tests.html" title=" Appendix
- E: Tests"> Appendix
+<a name="toward_boost_interthreads.appendices.tests"></a><a class="link" href="tests.html" title="Appendix E: Tests">Appendix
       E: Tests</a>
 </h3></div></div></div>
 <div class="toc"><dl><dt><span class="section">thread_specific_shared_pointer</span></dt></dl></div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.tests.thread_specific_shared_pointer"></a>thread_specific_shared_pointer
+<a name="toward_boost_interthreads.appendices.tests.thread_specific_shared_pointer"></a><a class="link" href="tests.html#toward_boost_interthreads.appendices.tests.thread_specific_shared_pointer" title="thread_specific_shared_pointer">thread_specific_shared_pointer</a>
 </h4></div></div></div>
 <div class="informaltable"><table class="table">
 <colgroup></colgroup>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/tickets.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/tickets.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/appendices/tickets.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Appendix
- F: Tickets</title>
+<title>Appendix F: Tickets</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../appendices.html" title="Appendices">
-<link rel="prev" href="tests.html" title=" Appendix
- E: Tests">
-<link rel="next" href="todo.html" title=" Appendix
- G: Future plans">
+<link rel="prev" href="tests.html" title="Appendix E: Tests">
+<link rel="next" href="todo.html" title="Appendix G: Future plans">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -26,10 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="tests.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.appendices.tickets"></a><a href="tickets.html" title=" Appendix
- F: Tickets"> Appendix
+<a name="toward_boost_interthreads.appendices.tickets"></a><a class="link" href="tickets.html" title="Appendix F: Tickets">Appendix
       F: Tickets</a>
 </h3></div></div></div>
 <div class="informaltable"><table class="table">
@@ -44,228 +39,228 @@
 </colgroup>
 <thead><tr>
 <th>
- <p>
- Kind
- </p>
+ <p>
+ Kind
+ </p>
               </th>
 <th>
- <p>
- Identifier
- </p>
+ <p>
+ Identifier
+ </p>
               </th>
 <th>
- <p>
- Description
- </p>
+ <p>
+ Description
+ </p>
               </th>
 <th>
- <p>
- Resolution
- </p>
+ <p>
+ Resolution
+ </p>
               </th>
 <th>
- <p>
- State
- </p>
+ <p>
+ State
+ </p>
               </th>
 <th>
- <p>
- Tests
- </p>
+ <p>
+ Tests
+ </p>
               </th>
 <th>
- <p>
- Version
- </p>
+ <p>
+ Version
+ </p>
               </th>
 </tr></thead>
 <tbody>
 <tr>
 <td>
- <p>
- bug
- </p>
+ <p>
+ bug
+ </p>
               </td>
 <td>
- <p>
- v0.1#1
- </p>
+ <p>
+ v0.1#1
+ </p>
               </td>
 <td>
- <p>
- basic_keep_alive example do not link
- </p>
+ <p>
+ basic_keep_alive example do not link
+ </p>
               </td>
 <td>
- <p>
- Add to the link
- </p>
+ <p>
+ Add to the link
+ </p>
               </td>
 <td>
- <p>
- Closed
- </p>
+ <p>
+ Closed
+ </p>
               </td>
 <td>
- <p>
- See basic_keep_alive.cpp example
- </p>
+ <p>
+ See basic_keep_alive.cpp example
+ </p>
               </td>
 <td>
- <p>
- v0.2
- </p>
+ <p>
+ v0.2
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- bug
- </p>
+ <p>
+ bug
+ </p>
               </td>
 <td>
- <p>
- v0.1.1#1
- </p>
+ <p>
+ v0.1.1#1
+ </p>
               </td>
 <td>
- <p>
- keep alive mechanism crash when setting set_on_dead_thread before
- enabling the mechanism
- </p>
+ <p>
+ keep alive mechanism crash when setting set_on_dead_thread before
+ enabling the mechanism
+ </p>
               </td>
 <td>
- <p>
- This was due to the fact that there were no default data for the
- backup.
- </p>
+ <p>
+ This was due to the fact that there were no default data for the
+ backup.
+ </p>
               </td>
 <td>
- <p>
- Closed
- </p>
+ <p>
+ Closed
+ </p>
               </td>
 <td>
- <p>
- See basic_keep_alive.cpp example
- </p>
+ <p>
+ See basic_keep_alive.cpp example
+ </p>
               </td>
 <td>
- <p>
- v0.4
- </p>
+ <p>
+ v0.4
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- bug
- </p>
+ <p>
+ bug
+ </p>
               </td>
 <td>
- <p>
- v0.1.1#2
- </p>
+ <p>
+ v0.1.1#2
+ </p>
               </td>
 <td>
- <p>
- keep alive mechanism do not detect dead threads
- </p>
+ <p>
+ keep alive mechanism do not detect dead threads
+ </p>
               </td>
 <td>
- <p>
- We need to reset the counters only when the period is 0.
- </p>
+ <p>
+ We need to reset the counters only when the period is 0.
+ </p>
               </td>
 <td>
- <p>
- Closed
- </p>
+ <p>
+ Closed
+ </p>
               </td>
 <td>
- <p>
- See basic_keep_alive.cpp example
- </p>
+ <p>
+ See basic_keep_alive.cpp example
+ </p>
               </td>
 <td>
- <p>
- v0.4
- </p>
+ <p>
+ v0.4
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- bug
- </p>
+ <p>
+ bug
+ </p>
               </td>
 <td>
- <p>
- v0.1.1#3
- </p>
+ <p>
+ v0.1.1#3
+ </p>
               </td>
 <td>
- <p>
- The set_on_dead_thread setting is not recovered by embeeding enablers/disablers
- </p>
+ <p>
+ The set_on_dead_thread setting is not recovered by embeeding enablers/disablers
+ </p>
               </td>
 <td>
- <p>
- The problem is that the on_dead and th thread pointer were stored
- on the backup. It is enough to store them on the
- </p>
+ <p>
+ The problem is that the on_dead and th thread pointer were stored
+ on the backup. It is enough to store them on the
+ </p>
               </td>
 <td>
- <p>
- Closed
- </p>
+ <p>
+ Closed
+ </p>
               </td>
 <td>
- <p>
- See basic_keep_alive.cpp example
- </p>
+ <p>
+ See basic_keep_alive.cpp example
+ </p>
               </td>
 <td>
- <p>
- v0.4
- </p>
+ <p>
+ v0.4
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- bug
- </p>
+ <p>
+ bug
+ </p>
               </td>
 <td>
- <p>
- v0.2.0#1
- </p>
+ <p>
+ v0.2.0#1
+ </p>
               </td>
 <td>
- <p>
- xxx
- </p>
+ <p>
+ xxx
+ </p>
               </td>
 <td>
- <p>
- xx
- </p>
+ <p>
+ xx
+ </p>
               </td>
 <td>
- <p>
- Open
- </p>
+ <p>
+ Open
+ </p>
               </td>
 <td>
- <p>
- xxx
- </p>
+ <p>
+ xxx
+ </p>
               </td>
 <td>
- <p>
- v0.4.1
- </p>
+ <p>
+ v0.4.1
+ </p>
               </td>
 </tr>
 </tbody>

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,15 +1,12 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Appendix
- G: Future plans</title>
+<title>Appendix G: Future plans</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
 <link rel="up" href="../appendices.html" title="Appendices">
-<link rel="prev" href="tickets.html" title=" Appendix
- F: Tickets">
+<link rel="prev" href="tickets.html" title="Appendix F: Tickets">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -24,11 +21,10 @@
 <div class="spirit-nav">
 <a accesskey="p" href="tickets.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.appendices.todo"></a><a href="todo.html" title=" Appendix
- G: Future plans"> Appendix
- G: Future plans</a>
+<a name="toward_boost_interthreads.appendices.todo"></a><a class="link" href="todo.html" title="Appendix G: Future plans">Appendix G:
+ Future plans</a>
 </h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review">Tasks
@@ -36,100 +32,99 @@
 <dt><span class="section"><a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases">For
         later releases</a></span></dt>
 </dl></div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review"></a><a href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review" title="Tasks
- to do before review">Tasks
+<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review"></a><a class="link" href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review" title="Tasks to do before review">Tasks
         to do before review</a>
 </h4></div></div></div>
-<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.complete_the_tests"></a><h5>
-<a name="id5038397"></a>
- <a href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.complete_the_tests">Complete
+<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.complete_the_tests"></a><h6>
+<a name="id3236864"></a>
+ <a class="link" href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.complete_the_tests">Complete
           the tests</a>
- </h5>
+ </h6>
 <p>
           Even if the current release include some test there is yet a long way before
           been able to review the library.]]
         </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- change the test so they take less time using locks; conditions and variables.
- </li>
-<li>
- Add test with functions throwing
- </li>
-<li>
- Formalize the tests for thread_decoratoor
- </li>
-<li>
- Formalize the tests for thread_specific_shared_ptr
- </li>
-<li>
- Add tests for keep alive mechanism
- </li>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ change the test so they take less time using locks; conditions and
+ variables.
+ </li>
+<li class="listitem">
+ Add test with functions throwing
+ </li>
+<li class="listitem">
+ Formalize the tests for thread_decoratoor
+ </li>
+<li class="listitem">
+ Formalize the tests for thread_specific_shared_ptr
+ </li>
+<li class="listitem">
+ Add tests for keep alive mechanism
+ </li>
 </ul></div>
-<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.add_more_examples"></a><h5>
-<a name="id5038453"></a>
- <a href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.add_more_examples">Add
+<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.add_more_examples"></a><h6>
+<a name="id3236937"></a>
+ <a class="link" href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.add_more_examples">Add
           more examples</a>
- </h5>
-<div class="itemizedlist"><ul type="disc">
-<li>
- Complete the STM example.
- </li>
-<li>
- Change the implementation of the file on the async_ostream.
- </li>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Complete the STM example.
+ </li>
+<li class="listitem">
+ Change the implementation of the file on the async_ostream.
+ </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="id5038490"></a>
- <a href="todo.html#toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.change_the_rational_and_implementation_sections">Change
+<a name="toward_boost_interthreads.appendices.todo.tasks_to_do_before_review.change_the_rational_and_implementation_sections"></a><h6>
+<a name="id3236980"></a>
+ <a class="link" 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>
+ </h6>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.appendices.todo.for_later_releases"></a><a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases" title="For
- later releases">For
+<a name="toward_boost_interthreads.appendices.todo.for_later_releases"></a><a class="link" href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases" title="For later releases">For
         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="id5038532"></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
+<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><h6>
+<a name="id3237022"></a>
+ <a class="link" 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="id5038563"></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
+ </h6>
+<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><h6>
+<a name="id3237052"></a>
+ <a class="link" 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="id5038593"></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
+ </h6>
+<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><h6>
+<a name="id3237082"></a>
+ <a class="link" 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="id5038624"></a>
- <a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases.add_a_daemon_controlling_all_the_keep_alive_controller_threads">Add
+ </h6>
+<a name="toward_boost_interthreads.appendices.todo.for_later_releases.add_a_daemon_controlling_all_the_keep_alive_controller_threads"></a><h6>
+<a name="id3237113"></a>
+ <a class="link" 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>
+ </h6>
 <p>
           This daemon will send regular keep_alive messages and kill the process
           when dead.
         </p>
-<a name="toward_boost_interthreads.appendices.todo.for_later_releases.optimize_the_tsss_maps_using_intrusive_containers"></a><h5>
-<a name="id5038660"></a>
- <a href="todo.html#toward_boost_interthreads.appendices.todo.for_later_releases.optimize_the_tsss_maps_using_intrusive_containers">Optimize
+<a name="toward_boost_interthreads.appendices.todo.for_later_releases.optimize_the_tsss_maps_using_intrusive_containers"></a><h6>
+<a name="id3237150"></a>
+ <a class="link" 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="id5038683"></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
+ </h6>
+<a name="toward_boost_interthreads.appendices.todo.for_later_releases.generalize_both_specific_pointers_in_a_template_class_basic_thread_specific_ptr"></a><h6>
+<a name="id3237172"></a>
+ <a class="link" 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>
+ </h6>
 <p>
           <span class="bold"><strong>Domain Features</strong></span>
         </p>
@@ -138,25 +133,25 @@
 <dl>
 <dt><span class="term">ownership: exclusive/shared</span></dt>
 <dd><p>
- Specifies if the pointer is exclusive to the thread or shared with
- other threads.
- </p></dd>
+ Specifies if the pointer is exclusive to the thread or shared with
+ other threads.
+ </p></dd>
 <dt><span class="term">key range: fixed/variable/mixed </span></dt>
 <dd><p>
- Specifies how the key range is defined. fixed has an integer range
- 0..n, variable takes as key the address of the specific_ptr and mixed
- use a variant of fixed or variable key.
- </p></dd>
+ Specifies how the key range is defined. fixed has an integer range
+ 0..n, variable takes as key the address of the specific_ptr and mixed
+ use a variant of fixed or variable key.
+ </p></dd>
 <dt><span class="term">key creation: eager/lazy</span></dt>
 <dd><p>
- Specifies how the key is created, eager at construction time, lazy
- when needed.
- </p></dd>
+ Specifies how the key is created, eager at construction time, lazy
+ when needed.
+ </p></dd>
 <dt><span class="term">context setting: eager/lazy</span></dt>
 <dd><p>
- Specifies how the pointer is set, eager at thread initialization time,
- lazy when needed.
- </p></dd>
+ Specifies how the pointer is set, eager at thread initialization
+ time, lazy when needed.
+ </p></dd>
 </dl>
 </div>
 <p>
@@ -164,16 +159,14 @@
           is exclusive, has a variable key range and so the key is initialized at
           construction time and explicit context setting by user on the current thread.
         </p>
-<pre class="programlisting">
-<span class="keyword">typedef</span> <span class="identifier">basic_thread_specific_ptr</span><span class="special">&lt;</span><span class="identifier">exclusive</span><span class="special">,</span> <span class="identifier">variable_key_range</span><span class="special">&lt;&gt;,</span> <span class="identifier">eager_context_setting</span><span class="special">&gt;</span> <span class="identifier">thread_specific_ptr</span><span class="special">;</span>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">basic_thread_specific_ptr</span><span class="special">&lt;</span><span class="identifier">exclusive</span><span class="special">,</span> <span class="identifier">variable_key_range</span><span class="special">&lt;&gt;,</span> <span class="identifier">eager_context_setting</span><span class="special">&gt;</span> <span class="identifier">thread_specific_ptr</span><span class="special">;</span>
 </pre>
 <p>
           The current <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span></code>
           is shared, has a variable key range and so the key is initialized at construction
           time and explicit context setting by user on the current thread.
         </p>
-<pre class="programlisting">
-<span class="keyword">typedef</span> <span class="identifier">basic_thread_specific_ptr</span><span class="special">&lt;</span><span class="identifier">exclusive</span><span class="special">,</span> <span class="identifier">variable_key_range</span><span class="special">&lt;&gt;,</span> <span class="identifier">eager_context_setting</span><span class="special">&gt;</span> <span class="identifier">thread_specific_ptr</span><span class="special">;</span>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">basic_thread_specific_ptr</span><span class="special">&lt;</span><span class="identifier">exclusive</span><span class="special">,</span> <span class="identifier">variable_key_range</span><span class="special">&lt;&gt;,</span> <span class="identifier">eager_context_setting</span><span class="special">&gt;</span> <span class="identifier">thread_specific_ptr</span><span class="special">;</span>
 </pre>
 <p>
           <span class="bold"><strong>Design rationale</strong></span>
@@ -214,14 +207,12 @@
           starts this is a no issue. The second is safe but has as consequence that
           every access include a check. In addition the type must be default constructible.
         </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">,</span> <span class="identifier">lazy_setting</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">;</span>
+<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">,</span> <span class="identifier">lazy_setting</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">;</span>
 </pre>
 <p>
           The pointer will be initilaized when needed as if we had do
         </p>
-<pre class="programlisting">
-<span class="keyword">if</span> <span class="special">(</span><span class="identifier">ptr</span><span class="special">.</span><span class="identifier">get</span><span class="special">()==</span><span class="number">0</span><span class="special">)</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">if</span> <span class="special">(</span><span class="identifier">ptr</span><span class="special">.</span><span class="identifier">get</span><span class="special">()==</span><span class="number">0</span><span class="special">)</span> <span class="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="special">);</span>
 <span class="special">}</span>
 </pre>

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,16 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Examples</title>
-<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../index.html" title="Toward Boost.InterThreads">
-<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">
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="up" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="prev" href="reference.html" title="Reference">
+<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>
@@ -23,24 +20,321 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="reference/thread_group_once_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="examples/thread_safe_deferred_traces.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="toward_boost_interthreads.examples"></a>Examples
+<a name="toward_boost_interthreads.examples"></a><a class="link" href="examples.html" title="Examples">Examples</a>
 </h2></div></div></div>
-<div class="toc"><dl><dt><span class="section"><a href="examples/thread_safe_deferred_traces.html">Thread
+<div class="toc"><dl><dt><span class="section"><a href="examples.html#toward_boost_interthreads.examples.thread_safe_deferred_traces">Thread
       safe deferred traces</a></span></dt></dl></div>
 <p>
       This section do includes complete examples using the library.
     </p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.examples.thread_safe_deferred_traces"></a><a class="link" href="examples.html#toward_boost_interthreads.examples.thread_safe_deferred_traces" title="Thread safe deferred traces">Thread
+ safe deferred traces</a>
+</h3></div></div></div>
+<p>
+ When executing on a multi thread environment, the output lines on std::cout
+ could interleave. We can synchronize these outputs with a global mutex
+ </p>
+<pre class="programlisting"><span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">&gt;</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">global_cout_mutex</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="special">...</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This mutex could be the bottleneck of the system. Only one mutex resource
+ for all the user threads.
+ </p>
+<pre class="programlisting">U U
+ /
+ /
+ U ----- R ----- U
+ |
+ |
+ U
+</pre>
+<p>
+ Another approach could be using a queue of output stream buffers for each
+ thread. Each buffer is timestamped with the creation date and there is a
+ concentrator that takes one by one the elements ordered by their timestamp.
+ Only the current thread can push on this queue because it is specific to
+ the thread. There is a single thread, the concentrator, that pops from these
+ queue. In this context we can ensure thread safety without locking as far
+ as the queue has at least two messages.
+ </p>
+<pre class="programlisting">U ----- R ------+
+ \
+ U ----- R ------\
+ \
+ U ----- R -------- C
+ / /
+ U ----- R ------/ /
+ /
+ U ----- R ------+
+</pre>
+<p>
+ This can be encapsulated in an async_ostream class
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">async_ostream</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">&gt;</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">char</span> <span class="identifier">char_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">sink_tag</span> <span class="identifier">category</span><span class="special">;</span>
+
+ <span class="identifier">async_ostream</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">flush</span><span class="special">();</span>
+<span class="special">};</span>
+
+<span class="keyword">extern</span> <span class="identifier">async_ostream</span> <span class="identifier">cout_</span><span class="special">;</span>
+</pre>
+<p>
+ With this interface the user can use cout_ as it used std::cout.
+ </p>
+<pre class="programlisting"><span class="identifier">cout_</span> <span class="special">&lt;&lt;</span> <span class="string">"Hello World!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+</pre>
+<p>
+ All the magic is in the <code class="computeroutput"><span class="keyword">template</span> <span class="keyword">class</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;&gt;</span></code>. The parameter must be a model of
+ a sink (See Boost.Iostreams). Here it is.
+ </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">async_ostream_sink</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">char</span> <span class="identifier">char_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">sink_tag</span> <span class="identifier">category</span><span class="special">;</span>
+ <span class="identifier">async_ostream_sink</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">flush</span><span class="special">();</span>
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">friend</span> <span class="keyword">class</span> <span class="identifier">async_ostream_concentrator</span><span class="special">;</span>
+ <span class="keyword">friend</span> <span class="keyword">class</span> <span class="identifier">async_ostream</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">impl</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">impl</span><span class="special">&gt;</span> <span class="identifier">impl_</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This class declares the just minimum in order to model a sink. In addition,
+ in order to mask the implementation, the Pimpl idiom is used. The implementation
+ of these functions is straigtforward:
+ </p>
+<pre class="programlisting"><span class="identifier">async_ostream</span><span class="special">::</span><span class="identifier">async_ostream</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span><span class="identifier">os</span><span class="special">)</span> <span class="special">{}</span>
+
+<span class="keyword">void</span> <span class="identifier">async_ostream</span><span class="special">::</span><span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">base_type</span><span class="special">::</span><span class="identifier">flush</span><span class="special">();</span>
+ <span class="identifier">async_ostream</span><span class="special">&amp;</span> <span class="identifier">d</span> <span class="special">=</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="identifier">d</span><span class="special">-&gt;</span><span class="identifier">flush</span><span class="special">();</span>
+<span class="special">}</span>
+
+<span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">impl_</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">(</span><span class="identifier">os</span><span class="special">))</span> <span class="special">{}</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">impl_</span><span class="special">-&gt;</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span><span class="identifier">n</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="keyword">void</span> <span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">impl_</span><span class="special">-&gt;</span><span class="identifier">flush</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Let me continue with the handle of the Pimpl pattern:
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span> <span class="special">{</span>
+ <span class="identifier">impl</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os_</span><span class="special">;</span>
+ <span class="identifier">tsss_type</span> <span class="identifier">tsss_</span><span class="special">;</span>
+ <span class="identifier">priority_queue_type</span> <span class="identifier">queue_</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">thread_</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">);</span>
+
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">terminate</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">that</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">loop</span><span class="special">(</span><span class="identifier">impl</span><span class="special">*</span> <span class="identifier">that</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Of course we need to store a reference to the final ostream.
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span>
+ <span class="identifier">tsss_</span></code> is used to encapsulate the
+ logic specific to each thread.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">tsss_type</span><span class="special">;</span>
+</pre>
+<p>
+ A priority queue <code class="computeroutput"><span class="identifier">queue_</span></code> will
+ be used by the concentrator thread to order the stringstreams by date.
+ </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">struct</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">timestamped</span> <span class="special">{</span>
+ <span class="identifier">system_time</span> <span class="identifier">date_</span><span class="special">;</span>
+ <span class="keyword">unsigned</span> <span class="identifier">seq_</span><span class="special">;</span>
+ <span class="identifier">T</span> <span class="identifier">value_</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">reset_date</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">seq</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">date_</span> <span class="special">=</span> <span class="identifier">system_time</span><span class="special">();</span>
+ <span class="identifier">seq_</span> <span class="special">=</span> <span class="identifier">seq</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_comparator_gt</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">timestamped</span><span class="special">*</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">value_type</span><span class="special">&amp;</span><span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span><span class="special">&amp;</span><span class="identifier">rhs</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">(</span><span class="identifier">lhs</span><span class="special">-&gt;</span><span class="identifier">date_</span> <span class="special">&gt;</span> <span class="identifier">rhs</span><span class="special">-&gt;</span><span class="identifier">date_</span><span class="special">)</span> <span class="special">?</span> <span class="keyword">true</span> <span class="special">:</span>
+ <span class="special">(</span><span class="identifier">lhs</span><span class="special">-&gt;</span><span class="identifier">date_</span> <span class="special">==</span> <span class="identifier">rhs</span><span class="special">-&gt;</span><span class="identifier">date_</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="special">(</span><span class="identifier">lhs</span><span class="special">-&gt;</span><span class="identifier">seq_</span> <span class="special">&gt;</span> <span class="identifier">rhs</span><span class="special">-&gt;</span><span class="identifier">seq_</span><span class="special">)?</span> <span class="keyword">true</span><span class="special">:</span><span class="keyword">false</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+<span class="special">};</span>
+
+<span class="keyword">typedef</span> <span class="identifier">timestamped</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span><span class="special">&gt;</span> <span class="identifier">element_type</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">priority_queue</span><span class="special">&lt;</span><span class="identifier">queue_type</span><span class="special">*,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">deque</span><span class="special">&lt;</span><span class="identifier">element_type</span><span class="special">*&gt;,</span> <span class="identifier">element_type</span><span class="special">::</span><span class="identifier">ptr_comparator_gt</span><span class="special">&gt;</span> <span class="identifier">priority_queue_type</span><span class="special">;</span>
+</pre>
+<p>
+ In addition to the timestamp <code class="computeroutput"><span class="identifier">date_</span></code>
+ we need a sequence number to order the stringstreams pushed without enough
+ time granularity, e.g. on the same microsecond.
+ </p>
+<p>
+ To finish the field declaration there is the concentrator thread implemented
+ by the loop function.
+ </p>
+<pre class="programlisting"><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="keyword">this</span><span class="special">))</span>
+</pre>
+<p>
+ Comming back to the sink implementation,
+ </p>
+<pre class="programlisting"><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">impl</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
+<span class="special">:</span> <span class="identifier">os_</span><span class="special">(</span><span class="identifier">os</span><span class="special">)</span>
+<span class="special">,</span> <span class="identifier">tsss_</span><span class="special">(</span><span class="identifier">terminate</span><span class="special">)</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="keyword">this</span><span class="special">))</span>
+<span class="special">{}</span>
+</pre>
+<p>
+ The terminate cleanup function is used to ensure that the queue is empty
+ before the thread finishes. To avoid optimizations a non const call inc is
+ done while waiting the queue empties.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">that</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">while</span> <span class="special">(!</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span>
+ <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">inc</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The central sink function is write. Here instead to lock a mutex the function
+ forwards to the thread specific shared pointer. We will see below how <code class="computeroutput"><span class="identifier">async_ostream_thread_ctx</span></code> handles this call.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">tsss_</span><span class="special">-&gt;</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ It is time to analyze the thread specific context before seeing how the concentrator
+ is implemented.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">async_ostream_thread_ctx</span> <span class="special">{</span>
+ <span class="identifier">async_ostream_thread_ctx</span><span class="special">();</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">flush</span><span class="special">();</span>
+ <span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">get</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">empty</span><span class="special">();}</span>
+ <span class="keyword">void</span> <span class="identifier">inc</span><span class="special">()</span> <span class="special">{++</span><span class="identifier">inc_</span><span class="special">;}</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">unsigned</span> <span class="identifier">seq_</span><span class="special">;</span>
+ <span class="identifier">element_type</span> <span class="special">*</span><span class="identifier">current_</span><span class="special">;</span>
+ <span class="identifier">queue_type</span> <span class="identifier">queue_</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span> <span class="identifier">mutex_</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span><span class="special">&amp;</span> <span class="identifier">buffer</span><span class="special">()</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">current_</span><span class="special">-&gt;</span><span class="identifier">value_</span><span class="special">;}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Each thread has a pointer to the current timestamped stringstream wich is
+ used for the current output flow, i.e. by the write function.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">buffer</span><span class="special">().</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">n</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Once the user does a flush, the current element is pushed on the queue. The
+ <code class="computeroutput"><span class="identifier">sec_</span></code> integer is used as monotonic
+ sequence in conjuntion with the timestamp.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">current_</span><span class="special">-&gt;</span><span class="identifier">reset_date</span><span class="special">(</span><span class="identifier">seq_</span><span class="special">);</span>
+ <span class="special">++</span><span class="identifier">seq_</span><span class="special">;</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">size</span><span class="special">()&gt;</span><span class="number">2</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">push</span><span class="special">(</span><span class="identifier">current_</span><span class="special">);</span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">&gt;</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">mutex_</span><span class="special">);</span>
+ <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">push</span><span class="special">(</span><span class="identifier">current_</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="identifier">current_</span> <span class="special">=</span> <span class="keyword">new</span> <span class="identifier">element_type</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+<p>
+ As stated in the introduction, we don't need to lock the mutex if the number
+ of elements in the queue is enough.
+ </p>
+<p>
+ These queue elements will be read by the concentrator using the get function.
+ </p>
+<pre class="programlisting"><span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">size</span><span class="special">()&gt;</span><span class="number">1</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">get_i</span><span class="special">();</span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">&gt;</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">mutex_</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">get_i</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">get_i</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">empty</span><span class="special">())</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">e</span><span class="special">=</span> <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">front</span><span class="special">();</span>
+ <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="identifier">e</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The concentrator loop looks like:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">async_ostream_sink_impl</span><span class="special">::</span><span class="identifier">loop</span><span class="special">(</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">*</span> <span class="identifier">that</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os_</span> <span class="special">=</span> <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">os_</span><span class="special">;</span>
+ <span class="keyword">for</span><span class="special">(;;)</span> <span class="special">{</span>
+ <span class="comment">// sleeps a little bit
+</span> <span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">sleep</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">posix_time</span><span class="special">::</span><span class="identifier">milliseconds</span><span class="special">(</span><span class="number">1</span><span class="special">));</span>
+ <span class="special">{</span> <span class="comment">// scope needed don't remove
+</span> <span class="comment">// lock the map access
+</span> <span class="identifier">tsss_type</span><span class="special">::</span><span class="identifier">lock_type</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">tsss_</span><span class="special">.</span><span class="identifier">get_mutex</span><span class="special">());</span>
+ <span class="keyword">const</span> <span class="identifier">tsss_type</span><span class="special">::</span><span class="identifier">map_type</span><span class="special">&amp;</span> <span class="identifier">tmap</span><span class="special">(</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">tsss_</span><span class="special">.</span><span class="identifier">get_map</span><span class="special">(</span><span class="identifier">lock</span><span class="special">));</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="identifier">tsss_type</span><span class="special">::</span><span class="identifier">map_type</span><span class="special">::</span><span class="identifier">const_iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">tmap</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span> <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">tmap</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span> <span class="special">++</span><span class="identifier">it</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// takes the first element of each thread queue (if it exists) and push it on the ordered queue.
+</span> <span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">e</span><span class="special">=</span> <span class="identifier">it</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">();</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">e</span> <span class="special">!=</span> <span class="number">0</span><span class="special">)</span> <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">push</span><span class="special">(</span><span class="identifier">e</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span> <span class="comment">//when the queue is empty sleeps a little more
+</span> <span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">sleep</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">posix_time</span><span class="special">::</span><span class="identifier">milliseconds</span><span class="special">(</span><span class="number">10</span><span class="special">));</span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="comment">// takes the fist element of the ordered queue, write them on the output stream and delete it.
+</span> <span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">e</span> <span class="special">=</span> <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">top</span><span class="special">();</span>
+ <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">os_</span> <span class="special">&lt;&lt;</span> <span class="string">"["</span><span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">-&gt;</span><span class="identifier">date_</span> <span class="special">&lt;&lt;</span><span class="string">"-"</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">-&gt;</span><span class="identifier">seq_</span> <span class="special">&lt;&lt;</span> <span class="string">"] "</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">-&gt;</span><span class="identifier">value_</span><span class="special">.</span><span class="identifier">str</span><span class="special">();</span>
+ <span class="keyword">delete</span> <span class="identifier">e</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
 <p>
       /
     </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2008 -2009 Vicente J. Botet Escriba<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2008 -2009,2011 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>
@@ -48,7 +342,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="reference/thread_group_once_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="examples/thread_safe_deferred_traces.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices.html"><img src="../../../../../doc/src/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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,12 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>Thread
- safe deferred traces</title>
+<title>Thread safe deferred traces</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">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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="../appendices.html" title="Appendices">
@@ -24,18 +22,16 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../examples.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../appendices.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.examples.thread_safe_deferred_traces"></a><a href="thread_safe_deferred_traces.html" title="Thread
- safe deferred traces">Thread
+<a name="toward_boost_interthreads.examples.thread_safe_deferred_traces"></a><a class="link" href="thread_safe_deferred_traces.html" title="Thread safe deferred traces">Thread
       safe deferred traces</a>
 </h3></div></div></div>
 <p>
         When executing on a multi thread environment, the output lines on std::cout
         could interleave. We can synchronize these outputs with a global mutex
       </p>
-<pre class="programlisting">
-<span class="special">{</span>
+<pre class="programlisting"><span class="special">{</span>
    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">&gt;</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">global_cout_mutex</span><span class="special">);</span>
    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="special">...</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
 <span class="special">}</span>
@@ -74,8 +70,7 @@
 <p>
         This can be encapsulated in an async_ostream class
       </p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">async_ostream</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">&gt;</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">async_ostream</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">&gt;</span> <span class="special">{</span>
 <span class="keyword">public</span><span class="special">:</span>
     <span class="keyword">typedef</span> <span class="keyword">char</span> <span class="identifier">char_type</span><span class="special">;</span>
     <span class="keyword">typedef</span> <span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">sink_tag</span> <span class="identifier">category</span><span class="special">;</span>
@@ -89,15 +84,13 @@
 <p>
         With this interface the user can use cout_ as it used std::cout.
       </p>
-<pre class="programlisting">
-<span class="identifier">cout_</span> <span class="special">&lt;&lt;</span> <span class="string">"Hello World!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+<pre class="programlisting"><span class="identifier">cout_</span> <span class="special">&lt;&lt;</span> <span class="string">"Hello World!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
 </pre>
 <p>
         All the magic is in the <code class="computeroutput"><span class="keyword">template</span> <span class="keyword">class</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;&gt;</span></code>. The parameter must be a model of
         a sink (See Boost.Iostreams). Here it is.
       </p>
-<pre class="programlisting">
-<span class="keyword">namespace</span> <span class="identifier">detail</span> <span class="special">{</span>
+<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">async_ostream_sink</span> <span class="special">{</span>
         <span class="keyword">typedef</span> <span class="keyword">char</span> <span class="identifier">char_type</span><span class="special">;</span>
         <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">sink_tag</span> <span class="identifier">category</span><span class="special">;</span>
@@ -117,8 +110,7 @@
         in order to mask the implementation, the Pimpl idiom is used. The implementation
         of these functions is straigtforward:
       </p>
-<pre class="programlisting">
-<span class="identifier">async_ostream</span><span class="special">::</span><span class="identifier">async_ostream</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
+<pre class="programlisting"><span class="identifier">async_ostream</span><span class="special">::</span><span class="identifier">async_ostream</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
     <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span><span class="identifier">os</span><span class="special">)</span> <span class="special">{}</span>
 
 <span class="keyword">void</span> <span class="identifier">async_ostream</span><span class="special">::</span><span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
@@ -141,8 +133,7 @@
 <p>
         Let me continue with the handle of the Pimpl pattern:
       </p>
-<pre class="programlisting">
-<span class="keyword">struct</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span> <span class="special">{</span>
     <span class="identifier">impl</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">);</span>
     <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os_</span><span class="special">;</span>
     <span class="identifier">tsss_type</span> <span class="identifier">tsss_</span><span class="special">;</span>
@@ -163,15 +154,13 @@
         <span class="identifier">tsss_</span></code> is used to encapsulate the
         logic specific to each thread.
       </p>
-<pre class="programlisting">
-<span class="keyword">typedef</span> <span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">tsss_type</span><span class="special">;</span>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">tsss_type</span><span class="special">;</span>
 </pre>
 <p>
         A priority queue <code class="computeroutput"><span class="identifier">queue_</span></code> will
         be used by the concentrator thread to order the stringstreams by date.
       </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>
+<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">struct</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">timestamped</span> <span class="special">{</span>
     <span class="identifier">system_time</span> <span class="identifier">date_</span><span class="special">;</span>
     <span class="keyword">unsigned</span> <span class="identifier">seq_</span><span class="special">;</span>
@@ -201,14 +190,12 @@
         To finish the field declaration there is the concentrator thread implemented
         by the loop function.
       </p>
-<pre class="programlisting">
-<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="keyword">this</span><span class="special">))</span>
+<pre class="programlisting"><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="keyword">this</span><span class="special">))</span>
 </pre>
 <p>
         Comming back to the sink implementation,
       </p>
-<pre class="programlisting">
-<span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">impl</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
+<pre class="programlisting"><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">impl</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
 <span class="special">:</span> <span class="identifier">os_</span><span class="special">(</span><span class="identifier">os</span><span class="special">)</span>
 <span class="special">,</span> <span class="identifier">tsss_</span><span class="special">(</span><span class="identifier">terminate</span><span class="special">)</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="keyword">this</span><span class="special">))</span>
@@ -219,8 +206,7 @@
         before the thread finishes. To avoid optimizations a non const call inc is
         done while waiting the queue empties.
       </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">that</span><span class="special">)</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">that</span><span class="special">)</span> <span class="special">{</span>
     <span class="keyword">while</span> <span class="special">(!</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span>
         <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">inc</span><span class="special">();</span>
     <span class="special">}</span>
@@ -230,8 +216,7 @@
         The central sink function is write. Here instead to lock a mutex the function
         forwards to the thread specific shared pointer. We will see below how <code class="computeroutput"><span class="identifier">async_ostream_thread_ctx</span></code> handles this call.
       </p>
-<pre class="programlisting">
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
     <span class="keyword">return</span> <span class="identifier">tsss_</span><span class="special">-&gt;</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span>
 <span class="special">}</span>
 </pre>
@@ -239,8 +224,7 @@
         It is time to analyze the thread specific context before seeing how the concentrator
         is implemented.
       </p>
-<pre class="programlisting">
-<span class="keyword">struct</span> <span class="identifier">async_ostream_thread_ctx</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">async_ostream_thread_ctx</span> <span class="special">{</span>
     <span class="identifier">async_ostream_thread_ctx</span><span class="special">();</span>
     <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">);</span>
     <span class="keyword">void</span> <span class="identifier">flush</span><span class="special">();</span>
@@ -259,8 +243,7 @@
         Each thread has a pointer to the current timestamped stringstream wich is
         used for the current output flow, i.e. by the write function.
       </p>
-<pre class="programlisting">
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
     <span class="identifier">buffer</span><span class="special">().</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span>
     <span class="keyword">return</span> <span class="identifier">n</span><span class="special">;</span>
 <span class="special">}</span>
@@ -270,8 +253,7 @@
         <code class="computeroutput"><span class="identifier">sec_</span></code> integer is used as monotonic
         sequence in conjuntion with the timestamp.
       </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">current_</span><span class="special">-&gt;</span><span class="identifier">reset_date</span><span class="special">(</span><span class="identifier">seq_</span><span class="special">);</span>
     <span class="special">++</span><span class="identifier">seq_</span><span class="special">;</span>
     <span class="keyword">if</span> <span class="special">(</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">size</span><span class="special">()&gt;</span><span class="number">2</span><span class="special">)</span> <span class="special">{</span>
@@ -290,8 +272,7 @@
 <p>
         These queue elements will be read by the concentrator using the get function.
       </p>
-<pre class="programlisting">
-<span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="special">{</span>
+<pre class="programlisting"><span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">if</span> <span class="special">(</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">size</span><span class="special">()&gt;</span><span class="number">1</span><span class="special">)</span> <span class="special">{</span>
         <span class="keyword">return</span> <span class="identifier">get_i</span><span class="special">();</span>
     <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
@@ -310,8 +291,7 @@
 <p>
         The concentrator loop looks like:
       </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">async_ostream_sink_impl</span><span class="special">::</span><span class="identifier">loop</span><span class="special">(</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">*</span> <span class="identifier">that</span><span class="special">)</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">async_ostream_sink_impl</span><span class="special">::</span><span class="identifier">loop</span><span class="special">(</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">*</span> <span class="identifier">that</span><span class="special">)</span> <span class="special">{</span>
     <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os_</span> <span class="special">=</span> <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">os_</span><span class="special">;</span>
     <span class="keyword">for</span><span class="special">(;;)</span> <span class="special">{</span>
         <span class="comment">// sleeps a little bit

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,14 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Overview</title>
-<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="prev" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="next" href="overview/motivation.html" title=" Motivation">
+<title>Overview</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="up" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="prev" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="next" href="users_guide.html" title="Users'Guide">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -21,129 +20,61 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="overview/motivation.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="users_guide.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="toward_boost_interthreads.overview"></a> Overview
+<a name="toward_boost_interthreads.overview"></a><a class="link" href="overview.html" title="Overview">Overview</a>
 </h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"> Motivation</span></dt>
+<dt><span class="section">Motivation</span></dt>
 <dd><dl>
-<dt><span class="section">Decorators</span></dt>
-<dt><span class="section"><a href="overview/motivation.html#toward_boost_interthreads.overview.motivation.sharing_thread_local_storage">Sharing
+<dt><span class="section">Decorators</span></dt>
+<dt><span class="section"><a href="overview.html#toward_boost_interthreads.overview.motivation.sharing_thread_local_storage">Sharing
         Thread Local Storage</a></span></dt>
-<dt><span class="section"><a href="overview/motivation.html#toward_boost_interthreads.overview.motivation.keep_alive_motivation">
- Keep Alive</a></span></dt>
-<dt><span class="section"><a href="overview/motivation.html#toward_boost_interthreads.overview.motivation.thread_tuple">Thread
+<dt><span class="section"><a href="overview.html#toward_boost_interthreads.overview.motivation.keep_alive_motivation">Keep
+ Alive</a></span></dt>
+<dt><span class="section"><a href="overview.html#toward_boost_interthreads.overview.motivation.thread_tuple">Thread
         Tuple</a></span></dt>
 </dl></dd>
+<dt><span class="section">Description</span></dt>
 </dl></div>
-<a name="toward_boost_interthreads.overview.description"></a><h3>
-<a name="id4946103"></a>
- Description
- </h3>
-<p>
- <span class="bold"><strong>Boost.InterThreads</strong></span> extends Boost.Threads adding some features:
- </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- A thread_decoration class allowing to define setup/cleanup functions which
- will be called only once by thread (if the thread function is decorated with
- thread_decorator): setup before the thread function and cleanup at thread
- exit. It is used together with asynchronous_executor_decorator
- </li>
-<li>
- A thread_decorator/thread_decorate class/function which decorate a thread
- function in order to call the setup and the cleanup of all the thread_decorations.
- </li>
-<li>
- A thread specific shared pointer which is an extension of the thread_specific_ptr
- providing access to this thread specific context from other threads. As it
- is shared the stored pointer is a shared_ptr instead of a raw one.
- </li>
-<li>
- A thread keep alive mechanism: this mechanism allows to detect threads that
- do not prove that they are alive by calling to the keep_alive_point regularly.
- When a thread is declared dead a user provided function is called, which
- by default will abort the program.
- </li>
-<li>
- A thread static array
- <div class="itemizedlist"><ul type="circle"><li>
- thread tuple: defines a thread groupe where the number of threads is
- know statically and the threads are created at construction time in oposition
- to a thread_group.
- </li></ul></div>
-</li>
-<li>
- A thread static array and a thread group with wait for any feature
- <div class="itemizedlist"><ul type="circle">
-<li>
- set_once: a synchonizer that allows to set a variable only once, notifying
- to the variable value to whatever is waiting for that.
- </li>
-<li>
- thread_tuple_once: an extension of the boost::thread_tuple which allows
- to join the completion of any thread using for that the set_once synchronizer.
- </li>
-<li>
- thread_group_once: an extension of the boost::thread_group which allows
- to join the completion of any thread in the group using for that the
- set_once synchronizer.
- </li>
-</ul></div>
-</li>
-</ul></div>
-<div class="note"><table border="0" summary="Note">
-<tr>
-<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
-<th align="left">Note</th>
-</tr>
-<tr><td align="left" valign="top"><p>
- thread_decorator and thread_specific_shared_ptr are based on the original
- implementation of threadalert written by Roland Schwarz.
- </p></td></tr>
-</table></div>
-<a name="toward_boost_interthreads.overview.how_to_use_this_documentation"></a><h3>
-<a name="id4948728"></a>
- <a href="overview.html#toward_boost_interthreads.overview.how_to_use_this_documentation">How
+<a name="toward_boost_interthreads.overview.how_to_use_this_documentation"></a><h4>
+<a name="id3012937"></a>
+ <a class="link" href="overview.html#toward_boost_interthreads.overview.how_to_use_this_documentation">How
       to Use This Documentation</a>
- </h3>
+ </h4>
 <p>
       This documentation makes use of the following naming and formatting conventions.
     </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span>
- <span class="identifier">font</span></code> and is syntax-highlighted.
- </li>
-<li>
- Replaceable text that you will need to supply is in
- <em class="replaceable"><code>
- italics
- </code></em>
- .
- </li>
-<li>
- If a name refers to a free function, it is specified like this: <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>;
- that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code>
- to indicate that it is a free function.
- </li>
-<li>
- If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special">&lt;&gt;</span></code>;
- that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">&lt;&gt;</span></code>
- to indicate that it is a class template.
- </li>
-<li>
- If a name refers to a function-like macro, it is specified like this: <code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
- that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
- macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
- </li>
-<li>
- Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
- sense are specified in CamelCase.
- </li>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span>
+ <span class="identifier">font</span></code> and is syntax-highlighted.
+ </li>
+<li class="listitem">
+ Replaceable text that you will need to supply is in <em class="replaceable"><code>italics</code></em>.
+ </li>
+<li class="listitem">
+ If a name refers to a free function, it is specified like this: <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code>
+ to indicate that it is a free function.
+ </li>
+<li class="listitem">
+ If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special">&lt;&gt;</span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">&lt;&gt;</span></code>
+ to indicate that it is a class template.
+ </li>
+<li class="listitem">
+ If a name refers to a function-like macro, it is specified like this:
+ <code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
+ that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
+ macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
+ sense are specified in CamelCase.
+ </li>
 </ul></div>
 <div class="note"><table border="0" summary="Note">
 <tr>
@@ -158,17 +89,318 @@
 <p>
       Finally, you can mentally add the following to any code fragments in this document:
     </p>
-<pre class="programlisting">
-<span class="comment">// Include all of InterThreads
+<pre class="programlisting"><span class="comment">// Include all of InterThreads
 </span><span class="preprocessor">#include</span> <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">interthreads</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 
 <span class="comment">// Create a namespace aliases
 </span><span class="keyword">namespace</span> <span class="identifier">bith</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">;</span>
 </pre>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.overview.motivation"></a><a class="link" href="overview.html#toward_boost_interthreads.overview.motivation" title="Motivation">Motivation</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Decorators</span></dt>
+<dt><span class="section"><a href="overview.html#toward_boost_interthreads.overview.motivation.sharing_thread_local_storage">Sharing
+ Thread Local Storage</a></span></dt>
+<dt><span class="section"><a href="overview.html#toward_boost_interthreads.overview.motivation.keep_alive_motivation">Keep
+ Alive</a></span></dt>
+<dt><span class="section"><a href="overview.html#toward_boost_interthreads.overview.motivation.thread_tuple">Thread
+ Tuple</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.overview.motivation.decorators"></a><a class="link" href="overview.html#toward_boost_interthreads.overview.motivation.decorators" title="Decorators">Decorators</a>
+</h4></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">call_once</span></code> provides a mechanism for ensuring
+ that an initialization routine is run exactly once on a programm without
+ data races or deadlocks. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">at_thread_exit</span></code>
+ allows to execute a cleanup function at thread exit.
+ </p>
+<p>
+ If we want a setup function to be executed once at the begining on the
+ threads and a cleanup at thread exit we need to do
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">thread_main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">setup</span><span class="special">();</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">at_thread_exit</span><span class="special">(</span><span class="identifier">cleanup</span><span class="special">);</span>
+ <span class="comment">// do whatever
+</span> <span class="comment">// ...
+</span><span class="special">}</span>
+<span class="comment">// ...
+</span><span class="special">{</span>
+ <span class="identifier">launch</span><span class="special">(</span><span class="identifier">thread_main</span><span class="special">);</span>
+ <span class="comment">//...
+</span><span class="special">}</span>
+</pre>
+<p>
+ Of course we can define an init function that calls setup and do the registration.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">init</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">setup</span><span class="special">();</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">at_thread_exit</span><span class="special">(</span><span class="identifier">cleanup</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Different services could require these setup/cleanup functions to be called,
+ and so each thread function should do
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">thread_main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">serv1</span><span class="special">::</span><span class="identifier">init</span><span class="special">();</span>
+ <span class="comment">// ...
+</span> <span class="identifier">servN</span><span class="special">::</span><span class="identifier">init</span><span class="special">();</span>
+ <span class="comment">// do whatever using serv1, ..., servN.
+</span> <span class="comment">// ...
+</span><span class="special">}</span>
+</pre>
+<p>
+ This approach is valid for services that the user can configure for specifics
+ threads, but not for services that must be installed on every thread.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">thread_decoration</span></code> ensures
+ that a setup function is called only once by thread before the thread function
+ provided the thread is created with a decorator wrapper. This setup function
+ is usualy used to set thread specific pointers and call functions once.
+ </p>
+<p>
+ The conterpart of the setup is the cleanup. The <code class="computeroutput"><span class="identifier">thread_decoration</span></code>
+ takes an optional cleanup function which will be executed at thread exit.
+ </p>
+<pre class="programlisting"><span class="comment">// define in only the implementation file of each service
+</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">::</span><span class="identifier">decoration</span> <span class="identifier">serv1</span><span class="special">:</span><span class="identifier">decoration</span><span class="special">(</span><span class="identifier">serv1</span><span class="special">:</span><span class="identifier">setup</span><span class="special">,</span> <span class="identifier">serv1</span><span class="special">:</span><span class="identifier">cleanup</span><span class="special">);</span>
+<span class="comment">// ...
+</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">::</span><span class="identifier">decoration</span> <span class="identifier">servN</span><span class="special">:</span><span class="identifier">decoration</span><span class="special">(</span><span class="identifier">servN</span><span class="special">:</span><span class="identifier">setup</span><span class="special">,</span> <span class="identifier">servN</span><span class="special">:</span><span class="identifier">cleanup</span><span class="special">);</span>
+
+
+<span class="keyword">void</span> <span class="identifier">thread_main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="comment">// do whatever using serv1, ..., servN.
+</span> <span class="comment">// ...
+</span><span class="special">}</span>
+
+<span class="comment">// ...
+</span><span class="special">{</span>
+ <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">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">::</span><span class="identifier">make_decorator</span><span class="special">(</span><span class="identifier">thread_main</span><span class="special">));</span>
+ <span class="comment">//...
+</span><span class="special">}</span>
+</pre>
+<p>
+ We can use a basic_threader_decorator as asynchronous executor to fork
+ thread_main.
+ </p>
+<pre class="programlisting"><span class="comment">// ...
+</span><span class="special">{</span>
+ <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">fork</span><span class="special">(</span><span class="identifier">basic_threader_decorator</span><span class="special">(),</span> <span class="identifier">thread_main</span><span class="special">);</span>
+ <span class="comment">//...
+</span><span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.overview.motivation.sharing_thread_local_storage"></a><a class="link" href="overview.html#toward_boost_interthreads.overview.motivation.sharing_thread_local_storage" title="Sharing Thread Local Storage">Sharing
+ Thread Local Storage</a>
+</h4></div></div></div>
+<p>
+ Thread local storage allows multi-threaded applications to have a separate
+ instance of a given data item for each thread. But does not provide any
+ mechanism to access this data from other threads. Although this seems to
+ defeat the whole point of thread-specific storage, it is useful when these
+ contexts need some kind of communication between them, or some central
+ global object needs to control them.
+ </p>
+<p>
+ The intent of the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span></code>
+ class is to allow two threads to establish a shared memory space, without
+ requiring the user code to pass any information. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span></code>
+ provides a portable mechanism for shared thread-local storage that works
+ on all compilers supported by <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code>
+ and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code>. Each instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_specific_shared_ptr</span></code> represents
+ a pointer to a shared object where each thread must have a distinct value.
+ </p>
+<p>
+ Only the current thread can modify the thread specific shared pointer using
+ the non const functions reset/release functions. Each time these functions
+ are used, a synchronization must be ensured to update the mapping. The
+ other threads have only read access to the shared_ptr&lt;T&gt;. It is worth
+ saying that the shared object T must be thread safe.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.overview.motivation.keep_alive_motivation"></a><a class="link" href="overview.html#toward_boost_interthreads.overview.motivation.keep_alive_motivation" title="Keep Alive">Keep
+ Alive</a>
+</h4></div></div></div>
+<p>
+ On fault tolerant systems we need to be able to detect threads that could
+ stay on a loop, or simply blocked.
+ </p>
+<p>
+ One way to detect this situations is to require the thread to signal it
+ is alive by calling a check point function. Of course it should be up to
+ the user to state when this mechanism is enabled or disabled. At the begining
+ of a thread the keep alive mechanism is disabled.
+ </p>
+<p>
+ A thread will be considered dead if during a given period the number of
+ checkins is inferior to a given threshold. These two parameters can be
+ given when the keep alive mechanislm is enabled.
+ </p>
+<p>
+ The controler checks 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>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.overview.motivation.thread_tuple"></a><a class="link" href="overview.html#toward_boost_interthreads.overview.motivation.thread_tuple" title="Thread Tuple">Thread
+ Tuple</a>
+</h4></div></div></div>
+<p>
+ The <code class="computeroutput"><span class="identifier">boots</span><span class="special">::</span><span class="identifier">thread_group</span></code> class allows to group dynamically
+ threads. This means that the container must be dynamic.
+ </p>
+<pre class="programlisting"><span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_group</span> <span class="identifier">tg</span><span class="special">;</span>
+ <span class="identifier">tg</span><span class="special">.</span><span class="identifier">create_thread</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">);</span>
+ <span class="identifier">tg</span><span class="special">.</span><span class="identifier">create_thread</span><span class="special">(</span><span class="identifier">thread2</span><span class="special">);</span>
+ <span class="identifier">tg</span><span class="special">.</span><span class="identifier">join_all</span><span class="special">(</span><span class="identifier">thread1</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 way. No new threads can be added to the
+ tuple once constructed. So we can write
+ </p>
+<pre class="programlisting"><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">tt</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">,</span> <span class="identifier">thread2</span><span class="special">);</span>
+ <span class="identifier">tt</span><span class="special">.</span><span class="identifier">join_all</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ As this
+ </p>
+<pre class="programlisting"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">conc_join_all</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">,</span> <span class="identifier">thread2</span><span class="special">);</span>
+</pre>
+<p>
+ In addition the user can join the first finishing thread.
+ </p>
+<pre class="programlisting"><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">conc_join_any</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">,</span> <span class="identifier">thread2</span><span class="special">);</span>
+</pre>
+<p>
+ Evidently, thread_tuple can not be used when we need dynamic creation or
+ deletion. The <code class="computeroutput"><span class="identifier">boots</span><span class="special">::</span><span class="identifier">thread_group</span></code> class allows to group dynamically
+ threads.
+ </p>
+<pre class="programlisting"><span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_group</span> <span class="identifier">tg</span><span class="special">;</span>
+ <span class="identifier">tg</span><span class="special">.</span><span class="identifier">create_thread</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">);</span>
+
+ <span class="comment">// later on
+</span> <span class="identifier">tg</span><span class="special">.</span><span class="identifier">create_thread</span><span class="special">(</span><span class="identifier">thread2</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">th3</span><span class="special">(</span><span class="identifier">thread3</span><span class="special">)</span>
+ <span class="identifier">tg</span><span class="special">.</span><span class="identifier">add_thread</span><span class="special">(</span><span class="identifier">th3</span><span class="special">);</span>
+
+ <span class="comment">// later on
+</span> <span class="identifier">tg</span><span class="special">.</span><span class="identifier">remove_thread</span><span class="special">(</span><span class="identifier">th3</span><span class="special">);</span>
+
+ <span class="identifier">tg</span><span class="special">.</span><span class="identifier">join_all</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Objects of type <code class="computeroutput"><span class="identifier">thread_tuple</span><span class="special">&lt;&gt;</span></code> are movable, so they can be stored
+ in move-aware containers, and returned from functions. This allows the
+ details of thread tuple creation to be wrapped in a function.
+ </p>
+<pre class="programlisting"><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">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="identifier">make_thread_tuple</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">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">some_thread_tuple</span><span class="special">=</span><span class="identifier">bith</span><span class="special">::</span><span class="identifier">make_thread_tuple</span><span class="special">(</span><span class="identifier">f1</span><span class="special">,</span> <span class="identifier">g2</span><span class="special">);</span>
+ <span class="identifier">some_thread_tuple</span><span class="special">.</span><span class="identifier">join</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.overview.description"></a><a class="link" href="overview.html#toward_boost_interthreads.overview.description" title="Description">Description</a>
+</h3></div></div></div>
+<p>
+ <span class="bold"><strong>Boost.InterThreads</strong></span> extends Boost.Threads adding some features:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ A thread_decoration class allowing to define setup/cleanup functions
+ which will be called only once by thread (if the thread function is decorated
+ with thread_decorator): setup before the thread function and cleanup
+ at thread exit. It is used together with asynchronous_executor_decorator
+ </li>
+<li class="listitem">
+ A thread_decorator/thread_decorate class/function which decorate a thread
+ function in order to call the setup and the cleanup of all the thread_decorations.
+ </li>
+<li class="listitem">
+ A thread specific shared pointer which is an extension of the thread_specific_ptr
+ providing access to this thread specific context from other threads.
+ As it is shared the stored pointer is a shared_ptr instead of a raw one.
+ </li>
+<li class="listitem">
+ A thread keep alive mechanism: this mechanism allows to detect threads
+ that do not prove that they are alive by calling to the keep_alive_point
+ regularly. When a thread is declared dead a user provided function is
+ called, which by default will abort the program.
+ </li>
+<li class="listitem">
+<p class="simpara">
+ A thread static array
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ thread tuple: defines a thread groupe where the number of threads
+ is know statically and the threads are created at construction time
+ in oposition to a thread_group.
+ </li></ul></div>
+</li>
+<li class="listitem">
+<p class="simpara">
+ A thread static array and a thread group with wait for any feature
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="circle">
+<li class="listitem">
+ set_once: a synchonizer that allows to set a variable only once,
+ notifying to the variable value to whatever is waiting for that.
+ </li>
+<li class="listitem">
+ thread_tuple_once: an extension of the boost::thread_tuple which
+ allows to join the completion of any thread using for that the set_once
+ synchronizer.
+ </li>
+<li class="listitem">
+ thread_group_once: an extension of the boost::thread_group which
+ allows to join the completion of any thread in the group using for
+ that the set_once synchronizer.
+ </li>
+</ul></div>
+</li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ thread_decorator and thread_specific_shared_ptr are based on the original
+ implementation of threadalert written by Roland Schwarz.
+ </p></td></tr>
+</table></div>
+</div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2008 -2009 Vicente J. Botet Escriba<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2008 -2009,2011 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>
@@ -176,7 +408,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="overview/motivation.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="users_guide.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview/motivation.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview/motivation.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/overview/motivation.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,14 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Motivation</title>
+<title>Motivation</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../overview.html" title=" Overview">
-<link rel="prev" href="../overview.html" title=" Overview">
-<link rel="next" href="../users_guide.html" title=" Users'Guide">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
+<link rel="up" href="../overview.html" title="Overview">
+<link rel="prev" href="../overview.html" title="Overview">
+<link rel="next" href="../users_guide.html" title="Users'Guide">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -23,22 +22,22 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../overview.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../users_guide.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.overview.motivation"></a> Motivation
+<a name="toward_boost_interthreads.overview.motivation"></a><a class="link" href="motivation.html" title="Motivation">Motivation</a>
 </h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Decorators</span></dt>
 <dt><span class="section"><a href="motivation.html#toward_boost_interthreads.overview.motivation.sharing_thread_local_storage">Sharing
         Thread Local Storage</a></span></dt>
-<dt><span class="section"><a href="motivation.html#toward_boost_interthreads.overview.motivation.keep_alive_motivation">
- Keep Alive</a></span></dt>
+<dt><span class="section"><a href="motivation.html#toward_boost_interthreads.overview.motivation.keep_alive_motivation">Keep
+ Alive</a></span></dt>
 <dt><span class="section"><a href="motivation.html#toward_boost_interthreads.overview.motivation.thread_tuple">Thread
         Tuple</a></span></dt>
 </dl></div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.overview.motivation.decorators"></a>Decorators
+<a name="toward_boost_interthreads.overview.motivation.decorators"></a><a class="link" href="motivation.html#toward_boost_interthreads.overview.motivation.decorators" title="Decorators">Decorators</a>
 </h4></div></div></div>
 <p>
           <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">call_once</span></code> provides a mechanism for ensuring
@@ -50,8 +49,7 @@
           If we want a setup function to be executed once at the begining on the
           threads and a cleanup at thread exit we need to do
         </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">thread_main</span><span class="special">()</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">thread_main</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">setup</span><span class="special">();</span>
     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">at_thread_exit</span><span class="special">(</span><span class="identifier">cleanup</span><span class="special">);</span>
     <span class="comment">// do whatever
@@ -66,8 +64,7 @@
 <p>
           Of course we can define an init function that calls setup and do the registration.
         </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">init</span><span class="special">()</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">init</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">setup</span><span class="special">();</span>
     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">at_thread_exit</span><span class="special">(</span><span class="identifier">cleanup</span><span class="special">);</span>
 <span class="special">}</span>
@@ -76,8 +73,7 @@
           Different services could require these setup/cleanup functions to be called,
           and so each thread function should do
         </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">thread_main</span><span class="special">()</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">thread_main</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">serv1</span><span class="special">::</span><span class="identifier">init</span><span class="special">();</span>
     <span class="comment">// ...
 </span> <span class="identifier">servN</span><span class="special">::</span><span class="identifier">init</span><span class="special">();</span>
@@ -99,8 +95,7 @@
           The conterpart of the setup is the cleanup. The <code class="computeroutput"><span class="identifier">thread_decoration</span></code>
           takes an optional cleanup function which will be executed at thread exit.
         </p>
-<pre class="programlisting">
-<span class="comment">// define in only the implementation file of each service
+<pre class="programlisting"><span class="comment">// define in only the implementation file of each service
 </span>
 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">::</span><span class="identifier">decoration</span> <span class="identifier">serv1</span><span class="special">:</span><span class="identifier">decoration</span><span class="special">(</span><span class="identifier">serv1</span><span class="special">:</span><span class="identifier">setup</span><span class="special">,</span> <span class="identifier">serv1</span><span class="special">:</span><span class="identifier">cleanup</span><span class="special">);</span>
 <span class="comment">// ...
@@ -122,18 +117,16 @@
           We can use a basic_threader_decorator as asynchronous executor to fork
           thread_main.
         </p>
-<pre class="programlisting">
-<span class="comment">// ...
+<pre class="programlisting"><span class="comment">// ...
 </span><span class="special">{</span>
     <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">fork</span><span class="special">(</span><span class="identifier">basic_threader_decorator</span><span class="special">(),</span> <span class="identifier">thread_main</span><span class="special">);</span>
     <span class="comment">//...
 </span><span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.overview.motivation.sharing_thread_local_storage"></a><a href="motivation.html#toward_boost_interthreads.overview.motivation.sharing_thread_local_storage" title="Sharing
- Thread Local Storage">Sharing
+<a name="toward_boost_interthreads.overview.motivation.sharing_thread_local_storage"></a><a class="link" href="motivation.html#toward_boost_interthreads.overview.motivation.sharing_thread_local_storage" title="Sharing Thread Local Storage">Sharing
         Thread Local Storage</a>
 </h4></div></div></div>
 <p>
@@ -161,11 +154,10 @@
           saying that the shared object T must be thread safe.
         </p>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.overview.motivation.keep_alive_motivation"></a><a href="motivation.html#toward_boost_interthreads.overview.motivation.keep_alive_motivation" title="
- Keep Alive">
- Keep Alive</a>
+<a name="toward_boost_interthreads.overview.motivation.keep_alive_motivation"></a><a class="link" href="motivation.html#toward_boost_interthreads.overview.motivation.keep_alive_motivation" title="Keep Alive">Keep
+ Alive</a>
 </h4></div></div></div>
 <p>
           On fault tolerant systems we need to be able to detect threads that could
@@ -188,18 +180,16 @@
           the program.
         </p>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.overview.motivation.thread_tuple"></a><a href="motivation.html#toward_boost_interthreads.overview.motivation.thread_tuple" title="Thread
- Tuple">Thread
+<a name="toward_boost_interthreads.overview.motivation.thread_tuple"></a><a class="link" href="motivation.html#toward_boost_interthreads.overview.motivation.thread_tuple" title="Thread Tuple">Thread
         Tuple</a>
 </h4></div></div></div>
 <p>
           The <code class="computeroutput"><span class="identifier">boots</span><span class="special">::</span><span class="identifier">thread_group</span></code> class allows to group dynamically
           threads. This means that the container must be dynamic.
         </p>
-<pre class="programlisting">
-<span class="special">{</span>
+<pre class="programlisting"><span class="special">{</span>
     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_group</span> <span class="identifier">tg</span><span class="special">;</span>
     <span class="identifier">tg</span><span class="special">.</span><span class="identifier">create_thread</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">);</span>
     <span class="identifier">tg</span><span class="special">.</span><span class="identifier">create_thread</span><span class="special">(</span><span class="identifier">thread2</span><span class="special">);</span>
@@ -212,8 +202,7 @@
           threads that are related in some way. No new threads can be added to the
           tuple once constructed. So we can write
         </p>
-<pre class="programlisting">
-<span class="special">{</span>
+<pre class="programlisting"><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">tt</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">,</span> <span class="identifier">thread2</span><span class="special">);</span>
     <span class="identifier">tt</span><span class="special">.</span><span class="identifier">join_all</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">);</span>
 <span class="special">}</span>
@@ -221,22 +210,19 @@
 <p>
           As this
         </p>
-<pre class="programlisting">
-<span class="identifier">bith</span><span class="special">::</span><span class="identifier">conc_join_all</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">,</span> <span class="identifier">thread2</span><span class="special">);</span>
+<pre class="programlisting"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">conc_join_all</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">,</span> <span class="identifier">thread2</span><span class="special">);</span>
 </pre>
 <p>
           In addition the user can join the first finishing thread.
         </p>
-<pre class="programlisting">
-<span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">conc_join_any</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">,</span> <span class="identifier">thread2</span><span class="special">);</span>
+<pre class="programlisting"><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">conc_join_any</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">,</span> <span class="identifier">thread2</span><span class="special">);</span>
 </pre>
 <p>
           Evidently, thread_tuple can not be used when we need dynamic creation or
           deletion. The <code class="computeroutput"><span class="identifier">boots</span><span class="special">::</span><span class="identifier">thread_group</span></code> class allows to group dynamically
           threads.
         </p>
-<pre class="programlisting">
-<span class="special">{</span>
+<pre class="programlisting"><span class="special">{</span>
     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_group</span> <span class="identifier">tg</span><span class="special">;</span>
     <span class="identifier">tg</span><span class="special">.</span><span class="identifier">create_thread</span><span class="special">(</span><span class="identifier">thread1</span><span class="special">);</span>
 
@@ -256,8 +242,7 @@
           in move-aware containers, and returned from functions. This allows the
           details of thread tuple creation to be wrapped in a function.
         </p>
-<pre class="programlisting">
-<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">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="identifier">make_thread_tuple</span><span class="special">(...);</span>
+<pre class="programlisting"><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">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="identifier">make_thread_tuple</span><span class="special">(...);</span>
 
 <span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span>
 <span class="special">{</span>

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,14 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Reference</title>
-<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="prev" href="users_guide/glosary.html" title=" Glossary">
-<link rel="next" href="reference/concepts.html" title="Concepts">
+<title>Reference</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="up" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="prev" href="users_guide.html" title="Users'Guide">
+<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,78 +20,2796 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="users_guide/glosary.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/concepts.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="users_guide.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="toward_boost_interthreads.reference"></a> Reference
+<a name="toward_boost_interthreads.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
 </h2></div></div></div>
 <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_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_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_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/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>
+<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.html#toward_boost_interthreads.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>
+<dd><dl><dt><span class="section"><a href="reference.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.html#toward_boost_interthreads.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>
+<dd><dl>
+<dt><span class="section"><a href="reference.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.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.html#toward_boost_interthreads.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>
+<dd><dl><dt><span class="section"><a href="reference.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.html#toward_boost_interthreads.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>
+<dd><dl>
+<dt><span class="section"><a href="reference.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.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.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.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.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
+<dt><span class="section"><a href="reference.html#toward_boost_interthreads.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>
-<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>
+<dd><dl><dt><span class="section"><a href="reference.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.html#toward_boost_interthreads.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>
+<dd><dl>
+<dt><span class="section"><a href="reference.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.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.html#toward_boost_interthreads.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>
+<dd><dl>
+<dt><span class="section"><a href="reference.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.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.html#toward_boost_interthreads.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>
+<dd><dl>
+<dt><span class="section"><a href="reference.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.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 class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.concepts"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.concepts" title="Concepts">Concepts</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section">Decorator</span></dt></dl></div>
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.concepts.decorator"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.concepts.decorator" title="Decorator">Decorator</a>
+</h4></div></div></div></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.thread_decoration_hpp"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.thread_decoration_hpp" 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="reference.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="reference.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="reference.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration"></a><a class="link" href="reference.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="reference.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="reference.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">
+<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 class="link" href="reference.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/src/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">
+<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 class="link" href="reference.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/src/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>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.thread_decorator_hpp" 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="reference.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">Constructor</span></dt>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator"></a><a class="link" href="reference.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">Constructor</span></dt>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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/src/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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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></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">
+<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 class="link" href="reference.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.decorate"></a><a class="link" href="reference.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>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp" 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="reference.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="reference.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="reference.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">Constructor</span></dt>
+<dt><span class="section"><a href="reference.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">Destructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<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 class="link" href="reference.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="reference.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="reference.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">Constructor</span></dt>
+<dt><span class="section"><a href="reference.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">Destructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<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 class="link" href="reference.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 class="itemizedlist" type="disc"><li class="listitem">
+ T The type of the pointeed object
+ </li></ul></div>
+</div>
+<div class="section">
+<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 class="link" href="reference.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 class="itemizedlist" type="disc">
+<li class="listitem">
+ <span class="bold"><strong><code class="computeroutput"><span class="identifier">shared_ptr_type</span></code></strong></span>
+ The shared pointed type.
+ </li>
+<li class="listitem">
+ <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 class="listitem">
+ <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 class="listitem">
+ <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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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/src/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">
+<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 class="link" href="reference.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/src/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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.keep_alive_file_hpp" 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="reference.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">Constructor</span></dt>
+<dt><span class="section">Destructor</span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference.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">Constructor</span></dt>
+<dt><span class="section">Destructor</span></dt>
 </dl></dd>
+<dt><span class="section"><a href="reference.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.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.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive"></a><a class="link" href="reference.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">Constructor</span></dt>
+<dt><span class="section">Destructor</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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">Constructor</span></dt>
+<dt><span class="section">Destructor</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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.set_once_hpp"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.set_once_hpp" 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="reference.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.set_once_hpp.set_onceclass"></a><a class="link" href="reference.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>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.thread_tuple_hpp" 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="reference.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="reference.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.template_parameters">Template
+ parameters</a></span></dt>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Destructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class"></a><a class="link" href="reference.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="reference.html#toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.template_parameters">Template
+ parameters</a></span></dt>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Destructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.template_parameters"></a><a class="link" href="reference.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 class="itemizedlist" type="disc"><li class="listitem">
+ n is the size of the tuple.
+ </li></ul></div>
+</div>
+<div class="section">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.detach_all"></a><a class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_make_thread_tuple"></a><a class="link" href="reference.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>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.thread_tuple_once_hpp" 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="reference.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="reference.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.template_parameters">Template
+ parameters</a></span></dt>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Destructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class"></a><a class="link" href="reference.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="reference.html#toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.template_parameters">Template
+ parameters</a></span></dt>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Destructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<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 class="link" href="reference.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 class="itemizedlist" type="disc"><li class="listitem">
+ n is the size of the tuple.
+ </li></ul></div>
+</div>
+<div class="section">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp"></a><a class="link" href="reference.html#toward_boost_interthreads.reference.thread_group_once_hpp" 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="reference.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">Constructor</span></dt>
+<dt><span class="section">Destructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class"></a><a class="link" href="reference.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">Constructor</span></dt>
+<dt><span class="section">Destructor</span></dt>
+<dt><span class="section"><a href="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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">
+<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 class="link" href="reference.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>
 </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 &#169; 2008 -2009 Vicente J. Botet Escriba<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2008 -2009,2011 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>
@@ -100,7 +2817,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="users_guide/glosary.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/concepts.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="users_guide.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,15 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Concepts</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../reference.html" title=" Reference">
-<link rel="prev" href="../reference.html" title=" Reference">
-<link rel="next" href="thread_decoration_hpp.html" title="
- Header &lt;boost/interthreads/thread_decoration.hpp&gt;">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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_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>
@@ -24,13 +22,13 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../reference.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="thread_decoration_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.reference.concepts"></a>Concepts
+<a name="toward_boost_interthreads.reference.concepts"></a><a class="link" href="concepts.html" title="Concepts">Concepts</a>
 </h3></div></div></div>
 <div class="toc"><dl><dt><span class="section">Decorator</span></dt></dl></div>
-<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.reference.concepts.decorator"></a>Decorator
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.reference.concepts.decorator"></a><a class="link" href="concepts.html#toward_boost_interthreads.reference.concepts.decorator" title="Decorator">Decorator</a>
 </h4></div></div></div></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/keep_alive_file_hpp.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/keep_alive_file_hpp.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/keep_alive_file_hpp.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Header &lt;boost/interthreads/thread_keep_alive.hpp&gt;</title>
+<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;">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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>
@@ -26,273 +22,239 @@
 <div class="spirit-nav">
 <a accesskey="p" href="thread_specific_shared_ptr_hpp.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_once_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp"></a><a class="link" 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>
+<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>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Destructor</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>
+<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>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Destructor</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>
+<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>
+<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="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>
-
-<span class="identifier">I</span></pre>
-<div class="section" lang="en">
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive"></a><a class="link" 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>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Destructor</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>
-<span class="identifier">alive</span></pre>
-<div class="section" lang="en">
+<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">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Constructor"></a><a class="link" 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 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>
+ Enable the keep alive mechanism on this thread of execution.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.enable_keep_alive.keep_alive_enable_keep_alive_Destructor"></a><a class="link" 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>
-<span class="identifier">t</span></pre>
+<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>
+ 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>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive"></a><a class="link" 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>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Destructor</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>
-<span class="identifier">e</span><span class="special">&gt;&lt;</span><span class="identifier">ph</span></pre>
-<div class="section" lang="en">
+<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">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Constructor"></a><a class="link" 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>
-<span class="identifier">i</span></pre>
+<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>
+ Disable the keep alive mechanism on this thread of execution.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_disable_keep_alive.keep_alive_disable_keep_alive_Destructor"></a><a class="link" 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>
-<span class="special">:</span></pre>
+<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>
+ 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>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_check_point"></a><a class="link" 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>
+<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>
+ States that the current thread is alive.
+ </p></dd>
 <dt><span class="term">Postconditions:</span></dt>
 <dd><p>
- The thread is alive.
- </p></dd>
+ The thread is alive.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_enabled"></a><a class="link" 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>
-<span class="identifier">a</span></pre>
+<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>
+ 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>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.keep_alive_file_hpp.keep_alive_keep_alive_set_on_dead_thread"></a><a class="link" 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>
-<span class="identifier">o</span></pre>
+<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>
+ 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>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/set_once_hpp.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/set_once_hpp.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/set_once_hpp.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Header
- &lt;boost/interthreads/set_once.hpp&gt;</title>
+<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;">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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>
@@ -26,35 +22,31 @@
 <div class="spirit-nav">
 <a accesskey="p" href="keep_alive_file_hpp.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="thread_tuple_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.reference.set_once_hpp"></a><a class="link" 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>
-<span class="identifier">ase</span> <span class="identifier">ro</span></pre>
-<div class="section" lang="en">
+<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">
 <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>
+<a name="toward_boost_interthreads.reference.set_once_hpp.set_onceclass"></a><a class="link" 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>
+<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>
@@ -77,8 +69,7 @@
     <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>
-
-<span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">type</span></pre>
+</pre>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decoration_hpp.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decoration_hpp.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decoration_hpp.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,16 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Header &lt;boost/interthreads/thread_decoration.hpp&gt;</title>
+<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">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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;">
+<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>
@@ -25,38 +22,35 @@
 <div class="spirit-nav">
 <a accesskey="p" href="concepts.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="thread_decorator_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decoration_hpp"></a><a class="link" 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>
+<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.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>
-###<span class="identifier">a</span>#</pre>
-<div class="section" lang="en">
+<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">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration"></a><a class="link" 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.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>
@@ -65,26 +59,23 @@
           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>
-<span class="identifier">p</span> <span class="identifier">function</span></pre>
-<div class="section" lang="en">
+<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">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.thread_decoration_class_constructor_setup"></a><a class="link" 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>
+<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">
@@ -92,30 +83,29 @@
 <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>
+ <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>
+ <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>
+ <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>
+ Nothing
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- unsafe
- </p></dd>
+ unsafe
+ </p></dd>
 </dl>
 </div>
 <div class="note"><table border="0" summary="Note">
@@ -128,46 +118,47 @@
             </p></td></tr>
 </table></div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_decoration_hpp.thread_decoration.constructor_with_setup___cleanup"></a><a class="link" 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>
-<span class="identifier">de</span></pre>
+<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>
+ <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>
+ <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>
+ <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>
+ Nothing
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- unsafe
- </p></dd>
+ unsafe
+ </p></dd>
 </dl>
 </div>
 <div class="note"><table border="0" summary="Note">

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decorator_hpp.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decorator_hpp.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_decorator_hpp.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Header &lt;boost/interthreads/thread_decorator.hpp&gt;</title>
+<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;">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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>
@@ -26,67 +22,60 @@
 <div class="spirit-nav">
 <a accesskey="p" href="thread_decoration_hpp.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="thread_specific_shared_ptr_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp"></a><a class="link" 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>
+<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>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Constructor</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>
+<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>
-<span class="identifier">l</span>#<span class="special">&gt;/&lt;/</span></pre>
-<div class="section" lang="en">
+<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">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator"></a><a class="link" 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>
+<dt><span class="section">Constructor</span></dt>
+<dt><span class="section">Constructor</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
@@ -94,35 +83,33 @@
           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>
+<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">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="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">(</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="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="keyword">void</span> <span class="keyword">operator</span> <span class="special">()();</span>
 
- <span class="special">};</span>
-########<span class="identifier">a</span>#####<span class="identifier">Su</span>#<span class="identifier">A</span>
-##<span class="number">8</span><span class="identifier">iv</span>#<span class="number">8</span></pre>
+<span class="special">};</span>
+</pre>
 <p>
           Functor wrapping the user function thread to ensure that all the decorations
           are called.
@@ -133,15 +120,14 @@
           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>
+<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>
-<span class="identifier">e</span><span class="special">=</span>#<span class="identifier">iden</span></pre>
+<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/src/images/note.png"></td>
@@ -163,310 +149,290 @@
           </p>
 </td></tr>
 </table></div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructor"></a><a class="link" 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>
-<span class="identifier">ignm</span></pre>
+<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>
+ <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>
+ <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>
+ <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>
+ safe
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_constructorn"></a><a class="link" 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>
-<span class="identifier">e</span><span class="special">&gt;</span></pre>
+<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>
+ <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>
+ <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>
+ <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>
+ safe
+ </p></dd>
 <dt><span class="term">Limitations:</span></dt>
 <dd><p>
- The current implementation defines overloads up to four parameters.
- </p></dd>
+ The current implementation defines overloads up to four parameters.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_move_constructor"></a><a class="link" 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>
-<span class="identifier">se</span></pre>
+<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>
+ <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>
+ <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>
+ <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>
+ safe
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_decorate_copy_constructor"></a><a class="link" 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>
-<span class="identifier">so</span></pre>
+<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>
+ <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>
+ <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>
+ 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>
+ Nothing.
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- neutral
- </p></dd>
+ neutral
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_conversion"></a><a class="link" 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>
-<span class="identifier">a</span></pre>
+<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>
+ 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>
+ 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>
+ Nothing.
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- neutral
- </p></dd>
+ neutral
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_move"></a><a class="link" 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>
-<span class="identifier">ra</span></pre>
+<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>
+ 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>
+ 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>
+ Nothing.
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- neutral
- </p></dd>
+ neutral
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_swap"></a><a class="link" 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>
+<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>
+<dd></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing.
- </p></dd>
+ Nothing.
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- neutral
- </p></dd>
+ neutral
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.thread_decorator.decorator_thread_decoration_operator_f"></a><a class="link" 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>
-<span class="identifier">t</span></pre>
+<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>
+ 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>
+ 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>
+ unsafe - depends on the decorations construction/destruction.
+ </p></dd>
 </dl>
 </div>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_decorator_hpp.decorate"></a><a class="link" 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>
+<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>
+ <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>
+ 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>
+ 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>
+ 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>
+ unsafe - depends on the decorations construction/destruction.
+ </p></dd>
 </dl>
 </div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_group_once_hpp.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_group_once_hpp.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_group_once_hpp.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,15 +1,12 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Header &lt;boost/interthreads/thread_group_once.hpp&gt;</title>
+<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;">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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">
@@ -25,433 +22,400 @@
 <div class="spirit-nav">
 <a accesskey="p" href="thread_tuple_once_hpp.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../examples.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp"></a><a class="link" 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>
+<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">Constructor</span></dt>
+<dt><span class="section">Destructor</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>
+<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>
+<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>
+<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="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>
-<span class="identifier">hrase</span><span class="special">&gt;&lt;</span><span class="identifier">p</span></pre>
-<div class="section" lang="en">
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class"></a><a class="link" 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">Constructor</span></dt>
+<dt><span class="section">Destructor</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>
+<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>
+<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="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">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="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="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">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="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>
-#######<span class="identifier">a</span>####<span class="identifier">X8v</span>#<span class="identifier">X8v</span>############<span class="identifier">a</span>####<span class="identifier">p8v</span>#<span class="identifier">p8v</span></pre>
-<div class="section" lang="en">
+ <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">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_callable_constructor"></a><a class="link" 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>
-<span class="identifier">h</span></pre>
+<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>
+ 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>
+ <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>
+ <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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_destructor"></a><a class="link" 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>
+<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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_joinable"></a><a class="link" 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>
-<span class="identifier">s</span></pre>
+<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>
+ <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>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_join"></a><a class="link" 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>
-<span class="identifier">e</span></pre>
+<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>
+ 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>
+ Every thread in the group has terminated.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_timed_join"></a><a class="link" 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>
-<span class="identifier">rol</span></pre>
+<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>
+ 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>
+ Every thread in the group has terminated.
+ </p></dd>
 <dt><span class="term">Returns:</span></dt>
 <dd><p>
- true if joined.
- </p></dd>
+ true if joined.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.join_first_then_interrupt"></a><a class="link" 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>
-<span class="number">0</span></pre>
+<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>
+ 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>
+ Every thread in the group has terminated.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.timed_join_first_then_interrupt"></a><a class="link" 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>
-<span class="identifier">de</span><span class="special">&gt;</span>#<span class="number">1</span></pre>
+<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>
+ 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>
+ Every thread in the group has terminated.
+ </p></dd>
 <dt><span class="term">Returns:</span></dt>
 <dd><p>
- true if joined.
- </p></dd>
+ true if joined.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.detach_all"></a><a class="link" 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>
-<span class="special">&lt;</span></pre>
+<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>
+ 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="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.member_function__interrupt_all___"></a><a class="link" 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>
-<span class="identifier">a</span></pre>
+<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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_class.thread_group_once_size"></a><a class="link" 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 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>
+ The number of threads in the group.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing.
- </p></dd>
+ Nothing.
+ </p></dd>
 </dl>
 </div>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_group_once_hpp.thread_group_once_make_thread_group_once"></a><a class="link" 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>
-<span class="identifier">e</span><span class="special">&gt;</span></pre>
+<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>
+ 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>
+ the created thread group.
+ </p></dd>
 </dl>
 </div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_specific_shared_ptr_hpp.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Header &lt;boost/interthreads/thread_specific_shared_ptr.hpp&gt;</title>
+<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;">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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>
@@ -26,256 +22,239 @@
 <div class="spirit-nav">
 <a accesskey="p" href="thread_decorator_hpp.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="keep_alive_file_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp"></a><a class="link" 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>
+<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">
+<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">Constructor</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_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>
+<dt><span class="section">Destructor</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>
-<span class="special">=</span><span class="string">"bold"</span><span class="special">&gt;</span></pre>
-<div class="section" lang="en">
+<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">
 <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>
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr"></a><a class="link" 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">
+<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">Constructor</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_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>
+<dt><span class="section">Destructor</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>
+<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">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>
-<span class="identifier">ad_specific_shared_ptr_hpp</span> <span class="identifier">Head</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>
+ <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">
+<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 class="link" 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>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ T The type of the pointeed object
+ </li></ul></div>
+</div>
+<div class="section">
+<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 class="link" 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>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ <span class="bold"><strong><code class="computeroutput"><span class="identifier">shared_ptr_type</span></code></strong></span>
+ The shared pointed type.
+ </li>
+<li class="listitem">
+ <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 class="listitem">
+ <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 class="listitem">
+ <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="section">
 <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>
+<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 class="link" 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>
-<span class="identifier">o</span></pre>
+<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>
+ 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>
+ <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>
+ safe.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<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 class="link" 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>
+<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>
+ <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>
+ 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>
+ <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>
+ safe.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<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 class="link" 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>
+<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>
+ 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>
+ Nothing.
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- safe.
- </p></dd>
+ safe.
+ </p></dd>
 </dl>
 </div>
 <div class="note"><table border="0" summary="Note">
@@ -291,30 +270,28 @@
             </p></td></tr>
 </table></div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
-<span class="identifier">u</span></pre>
+<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 class="link" 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>
+ The pointer associated with the current thread.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing.
- </p></dd>
+ Nothing.
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- safe.
- </p></dd>
+ safe.
+ </p></dd>
 </dl>
 </div>
 <div class="note"><table border="0" summary="Note">
@@ -328,170 +305,161 @@
             </p></td></tr>
 </table></div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
-<span class="identifier">e</span></pre>
+<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 class="link" 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>
+ <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>
+ <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>
+ Nothing.
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- safe.
- </p></dd>
+ safe.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<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 class="link" 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>
-<span class="identifier">_</span></pre>
+<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>
+ <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>
+ <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>
+ Nothing.
+ </p></dd>
 <dt><span class="term">Thread safety:</span></dt>
 <dd><p>
- safe.
- </p></dd>
+ safe.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<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 class="link" 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>
-<span class="special">&gt;</span></pre>
+<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>
+ 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>
+ <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>
+ <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>
+ 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>
+<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>
+ 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>
+ <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>
+ <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>
+ 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>
+<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>
+ 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>
+ <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>
+ <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>
+ 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>
+<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>
+ 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>
+ <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>
+ <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>
+ safe.
+ </p></dd>
 </dl>
 </div>
 <div class="variablelist">
@@ -499,107 +467,99 @@
 <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>
+ 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="section">
 <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>
+<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 class="link" 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>
-<span class="identifier">a</span></pre>
+<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>
+ 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>
+ <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="section">
 <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>
+<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 class="link" 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>
-<span class="identifier">o</span></pre>
+<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>
+ 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>
+ Nothing.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_mutex"></a><a class="link" 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>
-<span class="identifier">n</span></pre>
+<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>
+ Returns a reference to the protection mutex.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing.
- </p></dd>
+ Nothing.
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_specific_shared_ptr_hpp.thread_specific_shared_ptr_reference_thread_specific_shared_ptr.get_map"></a><a class="link" 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>
-<span class="identifier">a</span></pre>
+<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>
+ 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>
+ Nothing.
+ </p></dd>
 </dl>
 </div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_hpp.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_hpp.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_hpp.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Header &lt;boost/interthreads/thread_tuple.hpp&gt;</title>
+<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;">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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>
@@ -26,511 +22,476 @@
 <div class="spirit-nav">
 <a accesskey="p" href="set_once_hpp.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="thread_tuple_once_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp"></a><a class="link" 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>
+<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">Constructor</span></dt>
+<dt><span class="section">Destructor</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.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>
+<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>
+<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>
+<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="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="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>
-<span class="identifier">ead_tuple</span><span class="special">&lt;/</span></pre>
-<div class="section" lang="en">
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class"></a><a class="link" 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">Constructor</span></dt>
+<dt><span class="section">Destructor</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.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>
+<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>
+<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="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">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">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">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="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>
-<span class="identifier">ze_t</span><span class="special">&lt;/</span><span class="identifier">phrase</span><span class="special">&gt;</span> <span class="special">&lt;</span><span class="identifier">phrase</span> <span class="identifier">role</span><span class="special">=</span>#<span class="identifier">identifie</span></pre>
+ <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="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.template_parameters"></a><a class="link" 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 class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ n is the size of the tuple.
+ </li></ul></div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_callable_constructor"></a><a class="link" 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>
-<span class="identifier">e</span><span class="special">&gt;</span></pre>
+<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>
+ <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>
+ <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>
+ <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>
+ <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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_destructor"></a><a class="link" 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>
+<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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_joinable"></a><a class="link" 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>
-<span class="identifier">a</span></pre>
+<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>
+ <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>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_join"></a><a class="link" 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>
-<span class="identifier">de</span></pre>
+<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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_until___"></a><a class="link" 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>
-<span class="identifier">_</span></pre>
+<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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Returns:</span></dt>
 <dd><p>
- true if joined.
- </p></dd>
+ true if joined.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_all_for___"></a><a class="link" 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>
-<span class="identifier">ec</span></pre>
+<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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Returns:</span></dt>
 <dd><p>
- true if joined.
- </p></dd>
+ true if joined.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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>
-<span class="identifier">l</span></pre>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.join_first_then_interrupt"></a><a class="link" 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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.member_function__join_any_until___"></a><a class="link" 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>
-<span class="special">&lt;/</span><span class="identifier">phr</span></pre>
+<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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Returns:</span></dt>
 <dd><p>
- true if joined.
- </p></dd>
+ true if joined.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.detach_all"></a><a class="link" 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>
-<span class="special">&lt;</span></pre>
+<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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_interrupt_all"></a><a class="link" 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>
-<span class="identifier">r</span></pre>
+<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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_class.thread_tuple_size"></a><a class="link" 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 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>
+ The number of threads in the tuple.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing.
- </p></dd>
+ Nothing.
+ </p></dd>
 </dl>
 </div>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_hpp.thread_tuple_make_thread_tuple"></a><a class="link" 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>
-<span class="identifier">em</span></pre>
+<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>
+ makes a new thread_tuple&lt;&gt;.
+ </p></dd>
 <dt><span class="term">Returns:</span></dt>
 <dd><p>
- the created thread tuple.
- </p></dd>
+ the created thread tuple.
+ </p></dd>
 </dl>
 </div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_once_hpp.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_once_hpp.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/reference/thread_tuple_once_hpp.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,17 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Header &lt;boost/interthreads/thread_tuple_once.hpp&gt;</title>
+<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;">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" 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>
@@ -26,84 +22,77 @@
 <div class="spirit-nav">
 <a accesskey="p" href="thread_tuple_hpp.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="thread_group_once_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp"></a><a class="link" 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>
+<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">Constructor</span></dt>
+<dt><span class="section">Destructor</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>
+<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>
+<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>
+<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="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="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>
-<span class="identifier">le_once</span><span class="special">&lt;/</span><span class="identifier">ph</span></pre>
-<div class="section" lang="en">
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class"></a><a class="link" 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">Constructor</span></dt>
+<dt><span class="section">Destructor</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>
+<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
@@ -111,391 +100,364 @@
           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>
+<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="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">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="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="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">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="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>
-<span class="identifier">ial</span><span class="string">"&gt;,&lt;/phrase&gt; &lt;phrase role="</span><span class="identifier">special</span>#<span class="special">&gt;...</span></pre>
+ <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="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.template_parameters"></a><a class="link" 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 class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ n is the size of the tuple.
+ </li></ul></div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_callable_constructor"></a><a class="link" 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>
-<span class="identifier">le</span></pre>
+<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>
+ <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>
+ <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>
+ <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>
+ <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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_destructor"></a><a class="link" 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>
-<span class="identifier">u</span></pre>
+<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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_joinable"></a><a class="link" 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>
-<span class="identifier">s</span></pre>
+<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>
+ <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>
+ Nothing
+ </p></dd>
 </dl>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_join"></a><a class="link" 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>
-<span class="identifier">e</span></pre>
+<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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_all_until___"></a><a class="link" 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>
-<span class="identifier">cod</span></pre>
+<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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Returns:</span></dt>
 <dd><p>
- true if joined.
- </p></dd>
+ true if joined.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.member_function__join_any___"></a><a class="link" 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>
-<span class="identifier">e</span></pre>
+<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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.timed_join_first_then_interrupt"></a><a class="link" 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>
+ 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>
+ Every thread in the tuple has terminated.
+ </p></dd>
 <dt><span class="term">Returns:</span></dt>
 <dd><p>
- true if joined.
- </p></dd>
+ true if joined.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing
- </p></dd>
+ 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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.detach_all"></a><a class="link" 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>
-<span class="special">&lt;</span></pre>
+<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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_interrupt_all"></a><a class="link" 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>
-<span class="identifier">r</span></pre>
+<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>
+ 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="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_class.thread_tuple_once_size"></a><a class="link" 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 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>
+ The number of threads in the tuple.
+ </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
- Nothing.
- </p></dd>
+ Nothing.
+ </p></dd>
 </dl>
 </div>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.reference.thread_tuple_once_hpp.thread_tuple_once_make_thread_tuple_once"></a><a class="link" 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>
-<span class="identifier">ra</span></pre>
+<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>
+ 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>
+ the created thread tuple.
+ </p></dd>
 </dl>
 </div>
 </div>

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,15 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Users'Guide</title>
-<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../index.html" title="Toward Boost.InterThreads">
-<link rel="prev" href="overview/motivation.html" title=" Motivation">
-<link rel="next" href="users_guide/getting_started.html" title="
- Getting Started">
+<title>Users'Guide</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="up" href="../index.html" title="Toward Boost.InterThreads 0.1.3">
+<link rel="prev" href="overview.html" title="Overview">
+<link rel="next" href="reference.html" title="Reference">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,47 +20,1744 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="overview/motivation.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="users_guide/getting_started.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="overview.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="toward_boost_interthreads.users_guide"></a> Users'Guide
+<a name="toward_boost_interthreads.users_guide"></a><a class="link" href="users_guide.html" title="Users'Guide">Users'Guide</a>
 </h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="users_guide/getting_started.html">
- Getting Started</a></span></dt>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started">Getting
+ Started</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_interthreads.users_guide.getting_started.install">
- Installing InterThreads</a></span></dt>
-<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_interthreads.users_guide.getting_started.hello_world__decorator">Hello
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install">Installing
+ InterThreads</a></span></dt>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.hello_world__decorator">Hello
         World! decorator</a></span></dt>
-<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id">Monotonic
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id">Monotonic
         Thread Id</a></span></dt>
-<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_interthreads.users_guide.getting_started.basic_keep_alive">Basic
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.basic_keep_alive">Basic
         keep alive</a></span></dt>
 </dl></dd>
-<dt><span class="section"> Tutorial</span></dt>
+<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_decorator">Thread
+<dt><span class="section"><a href="users_guide.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
+<dt><span class="section"><a href="users_guide.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
+<dt><span class="section"><a href="users_guide.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
+<dt><span class="section"><a href="users_guide.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>
+<dt><span class="section">Examples</span></dt>
+<dd><dl><dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.examples.thread_safe_deferred_traces">Thread
+ safe deferred traces</a></span></dt></dl></dd>
+<dt><span class="section">References</span></dt>
+<dt><span class="section">Glossary</span></dt>
 </dl></div>
 <p>
       [/
     </p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.users_guide.getting_started"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started" title="Getting Started">Getting
+ Started</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install">Installing
+ InterThreads</a></span></dt>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.hello_world__decorator">Hello
+ World! decorator</a></span></dt>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id">Monotonic
+ Thread Id</a></span></dt>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.basic_keep_alive">Basic
+ keep alive</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.getting_started.install"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install" title="Installing InterThreads">Installing
+ InterThreads</a>
+</h4></div></div></div>
+<a name="toward_boost_interthreads.users_guide.getting_started.install.getting_boost_interthreads"></a><h6>
+<a name="id3024068"></a>
+ <a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install.getting_boost_interthreads">Getting
+ Boost.InterThreads</a>
+ </h6>
+<p>
+ You can get the last stable release of <span class="bold"><strong>Boost.InterThreads</strong></span>
+ by downloading <code class="literal">interthreads.zip</code> from the <a href="http://www.boost-consulting.com/vault/index.php?directory=Concurrent%20Programming" target="_top">Boost
+ Vault</a>
+ </p>
+<p>
+ You can also access the latest (unstable?) state from the <a href="https://svn.boost.org/svn/boost/sandbox/interthreads" target="_top">Boost
+ Sandbox</a>.
+ </p>
+<a name="toward_boost_interthreads.users_guide.getting_started.install.building_boost_interthreads"></a><h6>
+<a name="id3024122"></a>
+ <a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install.building_boost_interthreads">Building
+ Boost.InterThreads</a>
+ </h6>
+<p>
+ <span class="bold"><strong>Boost.InterThreads</strong></span> is not a header only
+ library. You need to compile it before use.
+ </p>
+<pre class="programlisting"><span class="identifier">cd</span> <span class="identifier">libs</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">build</span>
+<span class="identifier">bjam</span>
+</pre>
+<a name="toward_boost_interthreads.users_guide.getting_started.install.build_requirements"></a><h6>
+<a name="id3024192"></a>
+ <a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install.build_requirements">Build
+ Requirements</a>
+ </h6>
+<p>
+ <span class="bold"><strong>Boost.InterThreads</strong></span> depends on Boost. You
+ must use either Boost version 1.38.x or the version in SVN trunk. In particular,
+ <span class="bold"><strong>Boost.InterThreads</strong></span> depends on:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Boost.Array</span></dt>
+<dd><p>
+ for array, ...
+ </p></dd>
+<dt><span class="term">Boost.Bind</span></dt>
+<dd><p>
+ for bind, ...
+ </p></dd>
+<dt><span class="term">Boost.Config</span></dt>
+<dd><p>
+ for ??? and abi_prefic_sufix, ...
+ </p></dd>
+<dt><span class="term">Boost.Function</span></dt>
+<dd><p>
+ for function, ...
+ </p></dd>
+<dt><span class="term">Boost.Fusion</span></dt>
+<dd><p>
+ for tuples, and sequence algorithms ...
+ </p></dd>
+<dt><span class="term">Boost.MPL</span></dt>
+<dd><p>
+ for transform, ...
+ </p></dd>
+<dt><span class="term">Boost.Preprocesor</span></dt>
+<dd><p>
+ to simulate variadic templates , ...
+ </p></dd>
+<dt><span class="term">Boost.SmartPtr</span></dt>
+<dd><p>
+ for shared_ptr, ...
+ </p></dd>
+<dt><span class="term">Boost.Threads</span></dt>
+<dd><p>
+ for thread, thread_specific_ptr, call_once, mutex, condition_variable,
+ ...
+ </p></dd>
+<dt><span class="term">Boost.TypeOf</span></dt>
+<dd><p>
+ to register the ACT types.
+ </p></dd>
+<dt><span class="term">Boost.TypeTrais</span></dt>
+<dd><p>
+ for is_void, remove_references, ...
+ </p></dd>
+<dt><span class="term">Boost.Utility</span></dt>
+<dd><p>
+ for result_of, enable_if...
+ </p></dd>
+</dl>
+</div>
+<a name="toward_boost_interthreads.users_guide.getting_started.install.exceptions_safety"></a><h6>
+<a name="id3024483"></a>
+ <a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install.exceptions_safety">Exceptions
+ safety</a>
+ </h6>
+<p>
+ All functions in the library are exception-neutral and provide strong guarantee
+ of exception safety as long as the underlying parameters provide it.
+ </p>
+<a name="toward_boost_interthreads.users_guide.getting_started.install.thread_safety"></a><h6>
+<a name="id3024510"></a>
+ <a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install.thread_safety">Thread
+ safety</a>
+ </h6>
+<p>
+ All functions in the library are thread-unsafe except when noted explicitly.
+ </p>
+<a name="toward_boost_interthreads.users_guide.getting_started.install.tested_compilers"></a><h6>
+<a name="id3024535"></a>
+ <a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.install.tested_compilers">Tested
+ compilers</a>
+ </h6>
+<p>
+ Currently, <span class="bold"><strong>Boost.InterThreads</strong></span> has been
+ tested in the following compilers/platforms:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ GCC 3.4.4 Cygwin
+ </li>
+<li class="listitem">
+ GCC 3.4.6 Linux
+ </li>
+<li class="listitem">
+ GCC 4.1.2 Linux
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Please send any questions, comments and bug reports to boost &lt;at&gt;
+ lists &lt;dot&gt; boost &lt;dot&gt; org.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.getting_started.hello_world__decorator"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.hello_world__decorator" title="Hello World! decorator">Hello
+ World! decorator</a>
+</h4></div></div></div>
+<p>
+ This is a little bit more than a Hello World! example. It will also say
+ Bye, Bye!
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&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>
+<span class="preprocessor">#include</span> <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">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bith</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">;</span>
+
+<span class="keyword">void</span> <span class="identifier">my_setup</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Hello World!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">void</span> <span class="identifier">my_cleanup</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Bye, Bye!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decoration</span> <span class="identifier">my_decoration</span><span class="special">(</span><span class="identifier">my_setup</span><span class="special">,</span> <span class="identifier">my_cleanup</span><span class="special">);</span>
+
+<span class="keyword">void</span> <span class="identifier">my_thread</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"..."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">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">my_thread</span><span class="special">));</span>
+ <span class="identifier">th</span><span class="special">.</span><span class="identifier">join</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ When <code class="computeroutput"><span class="identifier">th</span></code> is created with
+ the <code class="computeroutput"><span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decorator</span></code> wrapper, it will initialize
+ all the decorations before calling <code class="computeroutput"><span class="identifier">my_thread</span></code>.
+ This <code class="computeroutput"><span class="identifier">my_cleanup</span></code> will be
+ registered with the <code class="computeroutput"><span class="identifier">boost</span><span class="special">:</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">at_thread_exit</span></code>
+ if the <code class="computeroutput"><span class="identifier">my_setup</span></code> function
+ succeeds i.e. does not throw. Then the thread function <code class="computeroutput"><span class="identifier">my_thread</span></code>
+ is called. At the thread exit, the <code class="computeroutput"><span class="identifier">my_cleanup</span></code>
+ function is called. This results on the following output
+ </p>
+<pre class="programlisting">Hello World!
+...
+Bye, Bye!
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id" title="Monotonic Thread Id">Monotonic
+ Thread Id</a>
+</h4></div></div></div>
+<p>
+ This example use thread decorator and thread specific pointers to implement
+ a monotonic thread identifier.
+ </p>
+<p>
+ The monotonic thread identifier is managed by the mono_thread_id class.
+ There is a mutex protecting the access to the monotonic counter. The main
+ difference between a thread_specific_shared_ptr and a thread_specific_ptr
+ is that we can get the specific pointer of another thread (*) With the
+ help of bith::thread_decoration, the setting of the thread specific shared
+ pointer is done transparently, as far as the thread is created using a
+ thread decorator. This setup function resets the specific pointer with
+ the value of the monotonic counter which will be self increased.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <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>
+<span class="preprocessor">#include</span> <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>
+<span class="preprocessor">#include</span> <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">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bith</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">;</span>
+
+<span class="keyword">class</span> <span class="identifier">mono_thread_id</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decoration</span> <span class="identifier">decoration_</span><span class="special">;</span>
+ <span class="keyword">typedef</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="keyword">unsigned</span><span class="special">&gt;</span> <span class="identifier">tssp_type</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">tssp_type</span> <span class="identifier">current_</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="identifier">counter_</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span> <span class="identifier">sync_</span><span class="special">;</span>
+
+ <span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="identifier">create</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">&gt;</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">sync_</span><span class="special">);</span>
+ <span class="keyword">unsigned</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">counter_</span><span class="special">;</span>
+ <span class="special">++</span><span class="identifier">counter</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">res</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">setup</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">current_</span><span class="special">.</span><span class="identifier">reset</span><span class="special">(</span><span class="keyword">new</span> <span class="keyword">unsigned</span><span class="special">(</span><span class="identifier">create</span><span class="special">());</span>
+ <span class="special">}</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="identifier">id</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="identifier">current_</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="identifier">id</span><span class="special">(</span><span class="identifier">boost</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">return</span> <span class="special">*</span><span class="identifier">current_</span><span class="special">[</span><span class="identifier">id</span><span class="special">];</span> <span class="comment">// (*)
+</span> <span class="special">}</span>
+
+<span class="special">};</span>
+
+<span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decoration</span> <span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">decoration</span><span class="special">(</span><span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">setup</span><span class="special">);</span>
+<span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">tssp_type</span> <span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">current_</span><span class="special">;</span>
+<span class="keyword">unsigned</span> <span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">counter_</span><span class="special">=</span><span class="number">0</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span> <span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">sync_</span><span class="special">;</span>
+</pre>
+<p>
+ In this way the applications using the thread_decorator can have access
+ to a monotonic thread id mono_thread_id::id() and this id is accesible
+ to other threads providing the boost::thread::id.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">my_thread</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"mono_thread_id="</span> <span class="special">&lt;&lt;</span> <span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">id</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">sleep</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="keyword">struct</span> <span class="identifier">mono_thread_id_out</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">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">t</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"thread::id="</span> <span class="special">&lt;&lt;</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">get_id</span><span class="special">()</span>
+ <span class="special">&lt;&lt;</span> <span class="string">" mono_thread_id="</span> <span class="special">&lt;&lt;</span> <span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">id</span><span class="special">(</span><span class="identifier">t</span><span class="special">.</span><span class="identifier">get_id</span><span class="special">())</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<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">shared_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">handles</span><span class="special">,</span> <span class="identifier">bith</span><span class="special">::</span><span class="identifier">fork_all</span><span class="special">(</span><span class="identifier">basic_threader_decorator</span><span class="special">,</span> <span class="identifier">my_thread</span><span class="special">,</span> <span class="identifier">my_thread</span><span class="special">));</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">handles</span><span class="special">,</span> <span class="identifier">mono_thread_id_out</span><span class="special">());</span>
+ <span class="identifier">bith</span><span class="special">.</span><span class="identifier">join_all</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This results on the following output
+ </p>
+<pre class="programlisting">mono_thread_id=1
+mono_thread_id=2
+thread::id=xxxx mono_thread_id=1
+thread::id=xxxx mono_thread_id=2
+
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.getting_started.basic_keep_alive"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.getting_started.basic_keep_alive" title="Basic keep alive">Basic
+ keep alive</a>
+</h4></div></div></div>
+<p>
+ This example shows the keep_alive basics.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <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>
+<span class="preprocessor">#include</span> <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">keep_alive</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <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">thread</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bith</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interthreads</span><span class="special">;</span>
+
+<span class="keyword">void</span> <span class="identifier">my_thread</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">bith</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">enable_keep_alive</span> <span class="identifier">enabler</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">5</span><span class="special">;</span> <span class="identifier">i</span><span class="special">++)</span> <span class="special">{</span>
+ <span class="identifier">bith</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">keep_alive_point</span><span class="special">();</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"thread_id="</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">sleep</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">bith</span><span class="special">::</span><span class="identifier">shared_threader_decorator</span> <span class="identifier">ae</span><span class="special">;</span>
+ <span class="identifier">bith</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special">(</span><span class="identifier">ae</span><span class="special">,</span> <span class="identifier">my_thread</span><span class="special">,</span> <span class="identifier">my_thread</span><span class="special">,</span> <span class="identifier">my_thread</span><span class="special">,</span> <span class="identifier">my_thread</span><span class="special">);</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The user creates 4 threads using the shared_threader_decorator <code class="computeroutput"><span class="identifier">AsynchronousExecutor</span></code> to be able to use
+ the keep_alive mechanism. It uses the default enabler (one keep_alive_point
+ every 2 seconds).
+ </p>
+<p>
+ This results on the following output
+ </p>
+<pre class="programlisting"></pre>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.tutorial" title="Tutorial">Tutorial</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator">Thread
+ Decorator</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration">Declaring
+ a decoration</a></span></dt>
+<dt><span class="section"><a href="users_guide.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="users_guide.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="users_guide.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="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.key_initialization">Key
+ initialization</a></span></dt>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.context_initialization">Context
+ initialization</a></span></dt>
+<dt><span class="section"><a href="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple">Thread
+ Tuple</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_launching">Launching
+ thread tuple</a></span></dt>
+<dt><span class="section"><a href="users_guide.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="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_joining">Joining
+ and detaching</a></span></dt>
+<dt><span class="section">Interruption</span></dt>
+</dl></dd>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator"></a><a class="link" href="users_guide.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="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration">Declaring
+ a decoration</a></span></dt>
+<dt><span class="section"><a href="users_guide.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="users_guide.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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration" title="Declaring a decoration">Declaring
+ a decoration</a>
+</h5></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>
+<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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.creating_threads_with_decorators"></a><a class="link" href="users_guide.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>
+ 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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.decorator_explicit_call"></a><a class="link" href="users_guide.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">// ...
+</span><span class="special">}</span>
+</pre>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer"></a><a class="link" href="users_guide.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="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.key_initialization">Key
+ initialization</a></span></dt>
+<dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.context_initialization">Context
+ initialization</a></span></dt>
+<dt><span class="section"><a href="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.key_initialization"></a><a class="link" href="users_guide.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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.context_initialization"></a><a class="link" href="users_guide.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>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ 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">// ...
+</span> <span class="identifier">ptr</span><span class="special">.</span><span class="identifier">reset</span><span class="special">(</span><span class="identifier">p</span><span class="special">);</span>
+ <span class="comment">// ...
+</span><span class="special">}</span>
+</pre>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ 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>
+<span class="special">}</span>
+<span class="identifier">bith</span><span class="special">::</span><span class="identifier">thread_decoration</span> <span class="identifier">myclass_decoration</span><span class="special">(</span><span class="identifier">myclass_setup</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">// ptr.reset(p); done implicitly
+</span>
+<span class="special">}</span>
+
+<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>
+</pre>
+</div>
+<div class="section">
+<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 class="link" href="users_guide.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">// ...
+</span> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">ptr</span><span class="special">.</span><span class="identifier">get</span><span class="special">()==</span><span class="number">0</span><span class="special">)</span> <span class="identifier">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="comment">// ...
+</span> <span class="identifier">ptr</span><span class="special">-&gt;</span><span class="identifier">someFct</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<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 class="link" href="users_guide.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>
+<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>
+<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>
+<span class="special">}</span> <span class="keyword">while</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>
+</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>
+<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>
+ 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 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">
+<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 class="link" href="users_guide.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>
+ <span class="comment">// use the map
+</span><span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<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 class="link" href="users_guide.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">
+<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 class="link" href="users_guide.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">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive"></a><a class="link" href="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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="users_guide.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>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.interface"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.interface" title="Interface">Interface</a>
+</h5></div></div></div>
+<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>
+ <span class="keyword">class</span> <span class="identifier">enable_keep_alive</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">periods</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">checkins</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>
+
+ <span class="keyword">class</span> <span class="identifier">disable_keep_alive</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>
+
+ <span class="keyword">void</span> <span class="identifier">keep_alive_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="identifier">thread</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="identifier">thread</span><span class="special">*</span> <span class="identifier">th</span><span class="special">=</span><span class="number">0</span><span class="special">);</span>
+
+ <span class="special">}</span>
+ <span class="keyword">bool</span> <span class="identifier">keep_alive_enabled</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">thread</span><span class="special">::</span><span class="identifier">id</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="number">0</span><span class="special">);</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_mechanism_initialization"></a><a class="link" href="users_guide.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">// ...
+</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">init</span><span class="special">();</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">thread_keep_alive_ctx</span><span class="special">&gt;</span> <span class="identifier">tssp</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">tssp</span> <span class="identifier">instance_</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">thread_decoration</span> <span class="identifier">initializer_</span><span class="special">;</span>
+ <span class="identifier">thread_keep_alive_internal</span><span class="special">*</span> <span class="identifier">data_</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="keyword">struct</span> <span class="identifier">keep_alive_mgr</span> <span class="special">{</span>
+ <span class="comment">// ...
+</span> <span class="keyword">static</span> <span class="keyword">void</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>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">init</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">instance_</span><span class="special">=</span><span class="keyword">new</span> <span class="identifier">keep_alive_mgr</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">thread_</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">once_flag</span> <span class="identifier">flag_</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">keep_alive_mgr</span><span class="special">*</span> <span class="identifier">instance_</span><span class="special">;</span>
+ <span class="special">};</span>
+<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>
+<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>
+<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>
+<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>
+<span class="keyword">void</span> <span class="identifier">keep_alive_mgr</span><span class="special">::</span><span class="identifier">init</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">instance_</span><span class="special">=</span><span class="keyword">new</span> <span class="identifier">keep_alive_mgr</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_threads"></a><a class="link" href="users_guide.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>
+<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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_enabling"></a><a class="link" href="users_guide.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>
+
+ <span class="comment">// ...
+</span> <span class="identifier">enable_keep_alive</span> <span class="identifier">ena</span><span class="special">;</span>
+ <span class="comment">// states that the thread will be declared dead if threre are
+</span> <span class="comment">// less that 1 check_points in 2 seconds.
+</span> <span class="keyword">for</span><span class="special">(;;)</span> <span class="special">{</span>
+ <span class="comment">// do a check point
+</span> <span class="identifier">keep_alive_point</span><span class="special">();</span>
+ <span class="comment">// ...
+</span> <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_disabling"></a><a class="link" href="users_guide.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>
+
+ <span class="comment">// ...
+</span> <span class="comment">// states that the thread will be declared dead if threre are
+</span> <span class="comment">// less that 1 check_points in 2 seconds.
+</span> <span class="identifier">enable_keep_alive</span> <span class="identifier">enabler</span><span class="special">;</span>
+ <span class="keyword">for</span><span class="special">(;;)</span> <span class="special">{</span>
+ <span class="comment">// do a check point
+</span> <span class="identifier">keep_alive_point</span><span class="special">();</span>
+
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">cnd</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// when a blocking task spending an undefined time
+</span> <span class="comment">// you can disable the keep alive mechanism
+</span> <span class="identifier">disable_keep_alive</span> <span class="identifier">disabler</span><span class="special">;</span>
+
+ <span class="special">}</span>
+ <span class="special">}</span>
+<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>
+<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>
+
+ <span class="comment">// ...
+</span> <span class="comment">// states that the thread will be declared dead if threre are
+</span> <span class="comment">// less that 1 check_points in 2 seconds.
+</span> <span class="identifier">enable_keep_alive</span> <span class="identifier">enabler</span><span class="special">;</span>
+ <span class="keyword">for</span><span class="special">(;;)</span> <span class="special">{</span>
+ <span class="comment">// do a check point
+</span> <span class="identifier">keep_alive_point</span><span class="special">();</span>
+
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">cnd</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// when a blocking task spending an undefined time
+</span> <span class="comment">// you can disable the keep alive mechanism
+</span> <span class="identifier">unknow_time_task</span><span class="special">();</span>
+ <span class="identifier">interruption_check_point</span><span class="special">();</span>
+
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_persistent"></a><a class="link" href="users_guide.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>
+
+ <span class="comment">// ...
+</span> <span class="comment">// states that the thread will be declared dead if threre are
+</span> <span class="comment">// less that 4 check_points in 30 seconds.
+</span> <span class="identifier">enable_keep_alive</span> <span class="identifier">enabler</span><span class="special">(</span><span class="number">15</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+ <span class="keyword">for</span><span class="special">(;;)</span> <span class="special">{</span>
+
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">cnd</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// it is know that this task will take no more than 15 seconds
+</span> <span class="identifier">enable_keep_alive</span> <span class="identifier">control</span><span class="special">(</span><span class="number">15</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+ <span class="identifier">know_time_task</span><span class="special">();</span>
+ <span class="identifier">keep_alive_point</span><span class="special">();</span>
+ <span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">interruprion_check_point</span><span class="special">();</span>
+ <span class="special">}</span>
+
+
+ <span class="special">}</span>
+ <span class="comment">// ...
+</span><span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<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 class="link" href="users_guide.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>
+ <span class="identifier">backup_</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">backup</span><span class="special">(</span><span class="identifier">data_</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">enable_keep_alive</span><span class="special">(</span><span class="identifier">periods</span><span class="special">,</span> <span class="identifier">checkins</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="identifier">enable_keep_alive</span><span class="special">::~</span><span class="identifier">enable_keep_alive</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">restore</span><span class="special">(</span><span class="identifier">backup_</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="identifier">disable_keep_alive</span><span class="special">::</span><span class="identifier">disable_keep_alive</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">backup_</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">backup</span><span class="special">(</span><span class="identifier">data_</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">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="identifier">disable_keep_alive</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">restore</span><span class="special">(</span><span class="identifier">backup_</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<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>
+ <span class="keyword">return</span> <span class="identifier">the_backup</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">void</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">restore</span><span class="special">(</span><span class="identifier">thread_keep_alive_internal</span><span class="special">*</span> <span class="identifier">backup</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">data_</span><span class="special">=</span><span class="identifier">backup</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">void</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">enable_keep_alive</span><span class="special">()</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="keyword">true</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="keyword">void</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">disable_keep_alive</span><span class="special">()</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="keyword">false</span><span class="special">;</span>
+<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>
+<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>
+
+<span class="keyword">void</span> <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">check_point</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">checkins_</span><span class="special">;</span>
+<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>
+<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>
+
+ <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">data_</span><span class="special">-&gt;</span><span class="identifier">on_dead_</span><span class="special">=</span><span class="identifier">fct</span><span class="special">;</span>
+ <span class="identifier">data_</span><span class="special">-&gt;</span><span class="identifier">thread_ptr_</span><span class="special">=</span><span class="identifier">th</span><span class="special">;</span>
+ <span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<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 class="link" href="users_guide.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>
+<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>
+<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>
+ <span class="keyword">while</span><span class="special">(!</span><span class="identifier">end</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">t</span><span class="special">.</span><span class="identifier">sec</span> <span class="special">+=</span> <span class="number">1</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">sleep</span><span class="special">(</span><span class="identifier">t</span><span class="special">);</span>
+ <span class="identifier">lock_type</span> <span class="identifier">lock</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">().</span><span class="identifier">get_mutex</span><span class="special">());</span>
+ <span class="keyword">const</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">tssp</span><span class="special">::</span><span class="identifier">map_type</span><span class="special">&amp;</span> <span class="identifier">tmap</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">().</span><span class="identifier">get_map</span><span class="special">());</span>
+ <span class="identifier">thread_keep_alive_ctx</span><span class="special">::</span><span class="identifier">tssp</span><span class="special">::</span><span class="identifier">map_type</span><span class="special">::</span><span class="identifier">const_iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">tmap</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+ <span class="keyword">for</span> <span class="special">(;</span><span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">tmap</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span> <span class="special">++</span><span class="identifier">it</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">it</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">.</span><span class="identifier">control</span><span class="special">(</span><span class="identifier">it</span><span class="special">-&gt;</span><span class="identifier">first</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<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>
+<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>
+<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>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">dead</span><span class="special">())</span> <span class="special">{</span>
+ <span class="identifier">on_dead</span><span class="special">(</span><span class="identifier">id</span><span class="special">);</span>
+ <span class="identifier">data_</span><span class="special">-&gt;</span><span class="identifier">checkins_</span><span class="special">=</span><span class="number">0</span><span class="special">;</span>
+ <span class="identifier">data_</span><span class="special">-&gt;</span><span class="identifier">periods_</span><span class="special">=</span><span class="identifier">data_</span><span class="special">-&gt;</span><span class="identifier">total_periods</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple"></a><a class="link" href="users_guide.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="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_launching">Launching
+ thread tuple</a></span></dt>
+<dt><span class="section"><a href="users_guide.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="users_guide.html#toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_joining">Joining
+ and detaching</a></span></dt>
+<dt><span class="section">Interruption</span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_launching"></a><a class="link" href="users_guide.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>
+<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">copies_are_safe</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">callable</span> <span class="identifier">x</span><span class="special">;</span>
+ <span class="identifier">callable</span> <span class="identifier">y</span><span class="special">;</span>
+ <span class="keyword">return</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">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">);</span>
+<span class="special">}</span> <span class="comment">// x and y are destroyed, but the newly-created threads have a copy, so this is OK
+</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">oops</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">callable</span> <span class="identifier">x</span><span class="special">;</span>
+ <span class="identifier">callable</span> <span class="identifier">y</span><span class="special">;</span>
+ <span class="keyword">return</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">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">x</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">y</span><span class="special">));</span>
+<span class="special">}</span> <span class="comment">// x and y are destroyed, but the newly-created threads still have a reference
+</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>
+<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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_exceptions"></a><a class="link" href="users_guide.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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_joining"></a><a class="link" href="users_guide.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">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_interruption"></a><a class="link" href="users_guide.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>
+<p>
+ <a name="interruption_points"></a> See the Boost.Threads library for the Predefined
+ Interruption Points.
+ </p>
+</div>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.users_guide.examples"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.examples" title="Examples">Examples</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="users_guide.html#toward_boost_interthreads.users_guide.examples.thread_safe_deferred_traces">Thread
+ safe deferred traces</a></span></dt></dl></div>
+<p>
+ This section do includes complete examples using the library.
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_interthreads.users_guide.examples.thread_safe_deferred_traces"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.examples.thread_safe_deferred_traces" title="Thread safe deferred traces">Thread
+ safe deferred traces</a>
+</h4></div></div></div>
+<p>
+ When executing on a multi thread environment, the output lines on std::cout
+ could interleave. We can synchronize these outputs with a global mutex
+ </p>
+<pre class="programlisting"><span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">&gt;</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">global_cout_mutex</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="special">...</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This mutex could be the bottleneck of the system. Only one mutex resource
+ for all the user threads.
+ </p>
+<pre class="programlisting">U U
+ /
+ /
+ U ----- R ----- U
+ |
+ |
+ U
+</pre>
+<p>
+ Another approach could be using a queue of output stream buffers for each
+ thread. Each buffer is timestamped with the creation date and there is
+ a concentrator that takes one by one the elements ordered by their timestamp.
+ Only the current thread can push on this queue because it is specific to
+ the thread. There is a single thread, the concentrator, that pops from
+ these queue. In this context we can ensure thread safety without locking
+ as far as the queue has at least two messages.
+ </p>
+<pre class="programlisting">U ----- R ------+
+ \
+ U ----- R ------\
+ \
+ U ----- R -------- C
+ / /
+ U ----- R ------/ /
+ /
+ U ----- R ------+
+</pre>
+<p>
+ This can be encapsulated in an async_ostream class
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">async_ostream</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">&gt;</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">char</span> <span class="identifier">char_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">sink_tag</span> <span class="identifier">category</span><span class="special">;</span>
+
+ <span class="identifier">async_ostream</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">flush</span><span class="special">();</span>
+<span class="special">};</span>
+
+<span class="keyword">extern</span> <span class="identifier">async_ostream</span> <span class="identifier">cout_</span><span class="special">;</span>
+</pre>
+<p>
+ With this interface the user can use cout_ as it used std::cout.
+ </p>
+<pre class="programlisting"><span class="identifier">cout_</span> <span class="special">&lt;&lt;</span> <span class="string">"Hello World!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+</pre>
+<p>
+ All the magic is in the <code class="computeroutput"><span class="keyword">template</span>
+ <span class="keyword">class</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;&gt;</span></code>. The parameter must be a model
+ of a sink (See Boost.Iostreams). Here it is.
+ </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">async_ostream_sink</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">char</span> <span class="identifier">char_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iostreams</span><span class="special">::</span><span class="identifier">sink_tag</span> <span class="identifier">category</span><span class="special">;</span>
+ <span class="identifier">async_ostream_sink</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">flush</span><span class="special">();</span>
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">friend</span> <span class="keyword">class</span> <span class="identifier">async_ostream_concentrator</span><span class="special">;</span>
+ <span class="keyword">friend</span> <span class="keyword">class</span> <span class="identifier">async_ostream</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">impl</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">impl</span><span class="special">&gt;</span> <span class="identifier">impl_</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This class declares the just minimum in order to model a sink. In addition,
+ in order to mask the implementation, the Pimpl idiom is used. The implementation
+ of these functions is straigtforward:
+ </p>
+<pre class="programlisting"><span class="identifier">async_ostream</span><span class="special">::</span><span class="identifier">async_ostream</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span><span class="identifier">os</span><span class="special">)</span> <span class="special">{}</span>
+
+<span class="keyword">void</span> <span class="identifier">async_ostream</span><span class="special">::</span><span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">base_type</span><span class="special">::</span><span class="identifier">flush</span><span class="special">();</span>
+ <span class="identifier">async_ostream</span><span class="special">&amp;</span> <span class="identifier">d</span> <span class="special">=</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="identifier">d</span><span class="special">-&gt;</span><span class="identifier">flush</span><span class="special">();</span>
+<span class="special">}</span>
+
+<span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">impl_</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">(</span><span class="identifier">os</span><span class="special">))</span> <span class="special">{}</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">impl_</span><span class="special">-&gt;</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span><span class="identifier">n</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="keyword">void</span> <span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">impl_</span><span class="special">-&gt;</span><span class="identifier">flush</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Let me continue with the handle of the Pimpl pattern:
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span> <span class="special">{</span>
+ <span class="identifier">impl</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os_</span><span class="special">;</span>
+ <span class="identifier">tsss_type</span> <span class="identifier">tsss_</span><span class="special">;</span>
+ <span class="identifier">priority_queue_type</span> <span class="identifier">queue_</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span> <span class="identifier">thread_</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">);</span>
+
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">terminate</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">that</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">loop</span><span class="special">(</span><span class="identifier">impl</span><span class="special">*</span> <span class="identifier">that</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Of course we need to store a reference to the final ostream.
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">thread_specific_shared_ptr</span>
+ <span class="identifier">tsss_</span></code> is used to encapsulate
+ the logic specific to each thread.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">thread_specific_shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">tsss_type</span><span class="special">;</span>
+</pre>
+<p>
+ A priority queue <code class="computeroutput"><span class="identifier">queue_</span></code>
+ will be used by the concentrator thread to order the stringstreams by date.
+ </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">struct</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">timestamped</span> <span class="special">{</span>
+ <span class="identifier">system_time</span> <span class="identifier">date_</span><span class="special">;</span>
+ <span class="keyword">unsigned</span> <span class="identifier">seq_</span><span class="special">;</span>
+ <span class="identifier">T</span> <span class="identifier">value_</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">reset_date</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">seq</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">date_</span> <span class="special">=</span> <span class="identifier">system_time</span><span class="special">();</span>
+ <span class="identifier">seq_</span> <span class="special">=</span> <span class="identifier">seq</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_comparator_gt</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">timestamped</span><span class="special">*</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">value_type</span><span class="special">&amp;</span><span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span><span class="special">&amp;</span><span class="identifier">rhs</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">(</span><span class="identifier">lhs</span><span class="special">-&gt;</span><span class="identifier">date_</span> <span class="special">&gt;</span> <span class="identifier">rhs</span><span class="special">-&gt;</span><span class="identifier">date_</span><span class="special">)</span> <span class="special">?</span> <span class="keyword">true</span> <span class="special">:</span>
+ <span class="special">(</span><span class="identifier">lhs</span><span class="special">-&gt;</span><span class="identifier">date_</span> <span class="special">==</span> <span class="identifier">rhs</span><span class="special">-&gt;</span><span class="identifier">date_</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="special">(</span><span class="identifier">lhs</span><span class="special">-&gt;</span><span class="identifier">seq_</span> <span class="special">&gt;</span> <span class="identifier">rhs</span><span class="special">-&gt;</span><span class="identifier">seq_</span><span class="special">)?</span> <span class="keyword">true</span><span class="special">:</span><span class="keyword">false</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+<span class="special">};</span>
+
+<span class="keyword">typedef</span> <span class="identifier">timestamped</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span><span class="special">&gt;</span> <span class="identifier">element_type</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">priority_queue</span><span class="special">&lt;</span><span class="identifier">queue_type</span><span class="special">*,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">deque</span><span class="special">&lt;</span><span class="identifier">element_type</span><span class="special">*&gt;,</span> <span class="identifier">element_type</span><span class="special">::</span><span class="identifier">ptr_comparator_gt</span><span class="special">&gt;</span> <span class="identifier">priority_queue_type</span><span class="special">;</span>
+</pre>
+<p>
+ In addition to the timestamp <code class="computeroutput"><span class="identifier">date_</span></code>
+ we need a sequence number to order the stringstreams pushed without enough
+ time granularity, e.g. on the same microsecond.
+ </p>
+<p>
+ To finish the field declaration there is the concentrator thread implemented
+ by the loop function.
+ </p>
+<pre class="programlisting"><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="keyword">this</span><span class="special">))</span>
+</pre>
+<p>
+ Comming back to the sink implementation,
+ </p>
+<pre class="programlisting"><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">impl</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">)</span>
+<span class="special">:</span> <span class="identifier">os_</span><span class="special">(</span><span class="identifier">os</span><span class="special">)</span>
+<span class="special">,</span> <span class="identifier">tsss_</span><span class="special">(</span><span class="identifier">terminate</span><span class="special">)</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="keyword">this</span><span class="special">))</span>
+<span class="special">{}</span>
+</pre>
+<p>
+ The terminate cleanup function is used to ensure that the queue is empty
+ before the thread finishes. To avoid optimizations a non const call inc
+ is done while waiting the queue empties.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">async_ostream_thread_ctx</span><span class="special">&gt;</span> <span class="identifier">that</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">while</span> <span class="special">(!</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span>
+ <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">inc</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The central sink function is write. Here instead to lock a mutex the function
+ forwards to the thread specific shared pointer. We will see below how
+ <code class="computeroutput"><span class="identifier">async_ostream_thread_ctx</span></code>
+ handles this call.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">tsss_</span><span class="special">-&gt;</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ It is time to analyze the thread specific context before seeing how the
+ concentrator is implemented.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">async_ostream_thread_ctx</span> <span class="special">{</span>
+ <span class="identifier">async_ostream_thread_ctx</span><span class="special">();</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">flush</span><span class="special">();</span>
+ <span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">get</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">empty</span><span class="special">();}</span>
+ <span class="keyword">void</span> <span class="identifier">inc</span><span class="special">()</span> <span class="special">{++</span><span class="identifier">inc_</span><span class="special">;}</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">unsigned</span> <span class="identifier">seq_</span><span class="special">;</span>
+ <span class="identifier">element_type</span> <span class="special">*</span><span class="identifier">current_</span><span class="special">;</span>
+ <span class="identifier">queue_type</span> <span class="identifier">queue_</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span> <span class="identifier">mutex_</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span><span class="special">&amp;</span> <span class="identifier">buffer</span><span class="special">()</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">current_</span><span class="special">-&gt;</span><span class="identifier">value_</span><span class="special">;}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Each thread has a pointer to the current timestamped stringstream wich
+ is used for the current output flow, i.e. by the write function.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">write</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">streamsize</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">buffer</span><span class="special">().</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">n</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Once the user does a flush, the current element is pushed on the queue.
+ The <code class="computeroutput"><span class="identifier">sec_</span></code> integer is used
+ as monotonic sequence in conjuntion with the timestamp.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">flush</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">current_</span><span class="special">-&gt;</span><span class="identifier">reset_date</span><span class="special">(</span><span class="identifier">seq_</span><span class="special">);</span>
+ <span class="special">++</span><span class="identifier">seq_</span><span class="special">;</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">size</span><span class="special">()&gt;</span><span class="number">2</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">push</span><span class="special">(</span><span class="identifier">current_</span><span class="special">);</span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">&gt;</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">mutex_</span><span class="special">);</span>
+ <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">push</span><span class="special">(</span><span class="identifier">current_</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="identifier">current_</span> <span class="special">=</span> <span class="keyword">new</span> <span class="identifier">element_type</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+<p>
+ As stated in the introduction, we don't need to lock the mutex if the number
+ of elements in the queue is enough.
+ </p>
+<p>
+ These queue elements will be read by the concentrator using the get function.
+ </p>
+<pre class="programlisting"><span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">size</span><span class="special">()&gt;</span><span class="number">1</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">get_i</span><span class="special">();</span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">&gt;</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">mutex_</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">get_i</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">get_i</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">empty</span><span class="special">())</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">e</span><span class="special">=</span> <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">front</span><span class="special">();</span>
+ <span class="identifier">queue_</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="identifier">e</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The concentrator loop looks like:
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">async_ostream_sink_impl</span><span class="special">::</span><span class="identifier">loop</span><span class="special">(</span><span class="identifier">async_ostream_sink</span><span class="special">::</span><span class="identifier">impl</span><span class="special">*</span> <span class="identifier">that</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os_</span> <span class="special">=</span> <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">os_</span><span class="special">;</span>
+ <span class="keyword">for</span><span class="special">(;;)</span> <span class="special">{</span>
+ <span class="comment">// sleeps a little bit
+</span> <span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">sleep</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">posix_time</span><span class="special">::</span><span class="identifier">milliseconds</span><span class="special">(</span><span class="number">1</span><span class="special">));</span>
+ <span class="special">{</span> <span class="comment">// scope needed don't remove
+</span> <span class="comment">// lock the map access
+</span> <span class="identifier">tsss_type</span><span class="special">::</span><span class="identifier">lock_type</span> <span class="identifier">lock</span><span class="special">(</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">tsss_</span><span class="special">.</span><span class="identifier">get_mutex</span><span class="special">());</span>
+ <span class="keyword">const</span> <span class="identifier">tsss_type</span><span class="special">::</span><span class="identifier">map_type</span><span class="special">&amp;</span> <span class="identifier">tmap</span><span class="special">(</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">tsss_</span><span class="special">.</span><span class="identifier">get_map</span><span class="special">(</span><span class="identifier">lock</span><span class="special">));</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="identifier">tsss_type</span><span class="special">::</span><span class="identifier">map_type</span><span class="special">::</span><span class="identifier">const_iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">tmap</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span> <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">tmap</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span> <span class="special">++</span><span class="identifier">it</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// takes the first element of each thread queue (if it exists) and push it on the ordered queue.
+</span> <span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">e</span><span class="special">=</span> <span class="identifier">it</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">();</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">e</span> <span class="special">!=</span> <span class="number">0</span><span class="special">)</span> <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">push</span><span class="special">(</span><span class="identifier">e</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span> <span class="comment">//when the queue is empty sleeps a little more
+</span> <span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">sleep</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">posix_time</span><span class="special">::</span><span class="identifier">milliseconds</span><span class="special">(</span><span class="number">10</span><span class="special">));</span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="comment">// takes the fist element of the ordered queue, write them on the output stream and delete it.
+</span> <span class="identifier">element_type</span><span class="special">*</span> <span class="identifier">e</span> <span class="special">=</span> <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">top</span><span class="special">();</span>
+ <span class="identifier">that</span><span class="special">-&gt;</span><span class="identifier">queue_</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">os_</span> <span class="special">&lt;&lt;</span> <span class="string">"["</span><span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">-&gt;</span><span class="identifier">date_</span> <span class="special">&lt;&lt;</span><span class="string">"-"</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">-&gt;</span><span class="identifier">seq_</span> <span class="special">&lt;&lt;</span> <span class="string">"] "</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">-&gt;</span><span class="identifier">value_</span><span class="special">.</span><span class="identifier">str</span><span class="special">();</span>
+ <span class="keyword">delete</span> <span class="identifier">e</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+<p>
+ /
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.users_guide.bibliography"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.bibliography" title="References">References</a>
+</h3></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Boost.Thread (A. Williams)</span></dt>
+<dd></dd>
+</dl>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_interthreads.users_guide.glosary"></a><a class="link" href="users_guide.html#toward_boost_interthreads.users_guide.glosary" title="Glossary">Glossary</a>
+</h3></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">alive (thread)</span></dt>
+<dd><p>
+ a thread is considered alive when not dead.
+ </p></dd>
+<dt><span class="term">cleanup decoration</span></dt>
+<dd><p>
+ function called at thread exit.
+ </p></dd>
+<dt><span class="term">dead (thread)</span></dt>
+<dd><p>
+ a thread is considered dead when has not done enough keep alive check
+ points for a given duration.
+ </p></dd>
+<dt><span class="term">decoration</span></dt>
+<dd><p>
+ Couple of setup/cleanup thread decorating functions.
+ </p></dd>
+<dt><span class="term">decorator</span></dt>
+<dd><p>
+ Functor wrapper decorating a thread with all the setups and cleanups
+ decorations.
+ </p></dd>
+<dt><span class="term">deleter TSSS</span></dt>
+<dd><p>
+ specific function used to delete the TSSS.
+ </p></dd>
+<dt><span class="term">KA</span></dt>
+<dd><p>
+ Keep Alive.
+ </p></dd>
+<dt><span class="term">setup decoration</span></dt>
+<dd><p>
+ function called before the thread starts.
+ </p></dd>
+<dt><span class="term">TSS</span></dt>
+<dd><p>
+ Thread Specific Storage.
+ </p></dd>
+<dt><span class="term">TSSS</span></dt>
+<dd><p>
+ Thread Specific Shared Storage.
+ </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 &#169; 2008 -2009 Vicente J. Botet Escriba<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2008 -2009,2011 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>
@@ -70,7 +1765,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="overview/motivation.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="users_guide/getting_started.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="overview.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/bibliography.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/bibliography.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/bibliography.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,15 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- References</title>
+<title>References</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../users_guide.html" title=" Users'Guide">
-<link rel="prev" href="tutorial.html" title=" Tutorial">
-<link rel="next" href="glosary.html" title=" Glossary">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="tutorial.html" title="Tutorial">
+<link rel="next" href="glosary.html" title="Glossary">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -24,19 +22,15 @@
 <div class="spirit-nav">
 <a accesskey="p" href="tutorial.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="glosary.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.users_guide.bibliography"></a><a href="bibliography.html" title="
- References">
- References</a>
+<a name="toward_boost_interthreads.users_guide.bibliography"></a><a class="link" href="bibliography.html" title="References">References</a>
 </h3></div></div></div>
 <div class="variablelist">
 <p class="title"><b></b></p>
 <dl>
-<dt><span class="term"><a href="http://www.boost.org/libs/thread" target="_top">Boost.Thread
- (A. Williams)</a></span></dt>
-<dd><p>
- </p></dd>
+<dt><span class="term">Boost.Thread (A. Williams)</span></dt>
+<dd></dd>
 </dl>
 </div>
 </div>

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,15 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>
- Getting Started</title>
+<title>Getting Started</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../users_guide.html" title=" Users'Guide">
-<link rel="prev" href="../users_guide.html" title=" Users'Guide">
-<link rel="next" href="tutorial.html" title=" Tutorial">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="../users_guide.html" title="Users'Guide">
+<link rel="next" href="tutorial.html" title="Tutorial">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -24,15 +22,14 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../users_guide.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.users_guide.getting_started"></a><a href="getting_started.html" title="
- Getting Started">
- Getting Started</a>
+<a name="toward_boost_interthreads.users_guide.getting_started"></a><a class="link" href="getting_started.html" title="Getting Started">Getting
+ Started</a>
 </h3></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install">
- Installing InterThreads</a></span></dt>
+<dt><span class="section"><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install">Installing
+ InterThreads</a></span></dt>
 <dt><span class="section"><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.hello_world__decorator">Hello
         World! decorator</a></span></dt>
 <dt><span class="section"><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id">Monotonic
@@ -40,17 +37,16 @@
 <dt><span class="section"><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.basic_keep_alive">Basic
         keep alive</a></span></dt>
 </dl></div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.users_guide.getting_started.install"></a><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install" title="
- Installing InterThreads">
- Installing InterThreads</a>
+<a name="toward_boost_interthreads.users_guide.getting_started.install"></a><a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install" title="Installing InterThreads">Installing
+ InterThreads</a>
 </h4></div></div></div>
-<a name="toward_boost_interthreads.users_guide.getting_started.install.getting_boost_interthreads"></a><h5>
-<a name="id4943219"></a>
- <a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.getting_boost_interthreads">Getting
+<a name="toward_boost_interthreads.users_guide.getting_started.install.getting_boost_interthreads"></a><h6>
+<a name="id3194614"></a>
+ <a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.getting_boost_interthreads">Getting
           Boost.InterThreads</a>
- </h5>
+ </h6>
 <p>
           You can get the last stable release of <span class="bold"><strong>Boost.InterThreads</strong></span>
           by downloading <code class="literal">interthreads.zip</code> from the <a href="http://www.boost-consulting.com/vault/index.php?directory=Concurrent%20Programming" target="_top">Boost
@@ -60,24 +56,23 @@
           You can also access the latest (unstable?) state from the <a href="https://svn.boost.org/svn/boost/sandbox/interthreads" target="_top">Boost
           Sandbox</a>.
         </p>
-<a name="toward_boost_interthreads.users_guide.getting_started.install.building_boost_interthreads"></a><h5>
-<a name="id4943275"></a>
- <a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.building_boost_interthreads">Building
+<a name="toward_boost_interthreads.users_guide.getting_started.install.building_boost_interthreads"></a><h6>
+<a name="id3194668"></a>
+ <a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.building_boost_interthreads">Building
           Boost.InterThreads</a>
- </h5>
+ </h6>
 <p>
           <span class="bold"><strong>Boost.InterThreads</strong></span> is not a header only
           library. You need to compile it before use.
         </p>
-<pre class="programlisting">
-<span class="identifier">cd</span> <span class="identifier">libs</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">build</span>
+<pre class="programlisting"><span class="identifier">cd</span> <span class="identifier">libs</span><span class="special">/</span><span class="identifier">interthreads</span><span class="special">/</span><span class="identifier">build</span>
 <span class="identifier">bjam</span>
 </pre>
-<a name="toward_boost_interthreads.users_guide.getting_started.install.build_requirements"></a><h5>
-<a name="id4943349"></a>
- <a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.build_requirements">Build
+<a name="toward_boost_interthreads.users_guide.getting_started.install.build_requirements"></a><h6>
+<a name="id3194738"></a>
+ <a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.build_requirements">Build
           Requirements</a>
- </h5>
+ </h6>
 <p>
           <span class="bold"><strong>Boost.InterThreads</strong></span> depends on Boost. You
           must use either Boost version 1.38.x or the version in SVN trunk. In particular,
@@ -88,91 +83,91 @@
 <dl>
 <dt><span class="term">Boost.Array</span></dt>
 <dd><p>
- for array, ...
- </p></dd>
+ for array, ...
+ </p></dd>
 <dt><span class="term">Boost.Bind</span></dt>
 <dd><p>
- for bind, ...
- </p></dd>
+ for bind, ...
+ </p></dd>
 <dt><span class="term">Boost.Config</span></dt>
 <dd><p>
- for ??? and abi_prefic_sufix, ...
- </p></dd>
+ for ??? and abi_prefic_sufix, ...
+ </p></dd>
 <dt><span class="term">Boost.Function</span></dt>
 <dd><p>
- for function, ...
- </p></dd>
+ for function, ...
+ </p></dd>
 <dt><span class="term">Boost.Fusion</span></dt>
 <dd><p>
- for tuples, and sequence algorithms ...
- </p></dd>
+ for tuples, and sequence algorithms ...
+ </p></dd>
 <dt><span class="term">Boost.MPL</span></dt>
 <dd><p>
- for transform, ...
- </p></dd>
+ for transform, ...
+ </p></dd>
 <dt><span class="term">Boost.Preprocesor</span></dt>
 <dd><p>
- to simulate variadic templates , ...
- </p></dd>
+ to simulate variadic templates , ...
+ </p></dd>
 <dt><span class="term">Boost.SmartPtr</span></dt>
 <dd><p>
- for shared_ptr, ...
- </p></dd>
+ for shared_ptr, ...
+ </p></dd>
 <dt><span class="term">Boost.Threads</span></dt>
 <dd><p>
- for thread, thread_specific_ptr, call_once, mutex, condition_variable,
- ...
- </p></dd>
+ for thread, thread_specific_ptr, call_once, mutex, condition_variable,
+ ...
+ </p></dd>
 <dt><span class="term">Boost.TypeOf</span></dt>
 <dd><p>
- to register the ACT types.
- </p></dd>
+ to register the ACT types.
+ </p></dd>
 <dt><span class="term">Boost.TypeTrais</span></dt>
 <dd><p>
- for is_void, remove_references, ...
- </p></dd>
+ for is_void, remove_references, ...
+ </p></dd>
 <dt><span class="term">Boost.Utility</span></dt>
 <dd><p>
- for result_of, enable_if...
- </p></dd>
+ for result_of, enable_if...
+ </p></dd>
 </dl>
 </div>
-<a name="toward_boost_interthreads.users_guide.getting_started.install.exceptions_safety"></a><h5>
-<a name="id4943631"></a>
- <a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.exceptions_safety">Exceptions
+<a name="toward_boost_interthreads.users_guide.getting_started.install.exceptions_safety"></a><h6>
+<a name="id3195028"></a>
+ <a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.exceptions_safety">Exceptions
           safety</a>
- </h5>
+ </h6>
 <p>
           All functions in the library are exception-neutral and provide strong guarantee
           of exception safety as long as the underlying parameters provide it.
         </p>
-<a name="toward_boost_interthreads.users_guide.getting_started.install.thread_safety"></a><h5>
-<a name="id4943659"></a>
- <a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.thread_safety">Thread
+<a name="toward_boost_interthreads.users_guide.getting_started.install.thread_safety"></a><h6>
+<a name="id3195055"></a>
+ <a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.thread_safety">Thread
           safety</a>
- </h5>
+ </h6>
 <p>
           All functions in the library are thread-unsafe except when noted explicitly.
         </p>
-<a name="toward_boost_interthreads.users_guide.getting_started.install.tested_compilers"></a><h5>
-<a name="id4943686"></a>
- <a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.tested_compilers">Tested
+<a name="toward_boost_interthreads.users_guide.getting_started.install.tested_compilers"></a><h6>
+<a name="id3195081"></a>
+ <a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.install.tested_compilers">Tested
           compilers</a>
- </h5>
+ </h6>
 <p>
           Currently, <span class="bold"><strong>Boost.InterThreads</strong></span> has been
           tested in the following compilers/platforms:
         </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- GCC 3.4.4 Cygwin
- </li>
-<li>
- GCC 3.4.6 Linux
- </li>
-<li>
- GCC 4.1.2 Linux
- </li>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ GCC 3.4.4 Cygwin
+ </li>
+<li class="listitem">
+ GCC 3.4.6 Linux
+ </li>
+<li class="listitem">
+ GCC 4.1.2 Linux
+ </li>
 </ul></div>
 <div class="note"><table border="0" summary="Note">
 <tr>
@@ -185,18 +180,16 @@
           </p></td></tr>
 </table></div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.users_guide.getting_started.hello_world__decorator"></a><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.hello_world__decorator" title="Hello
- World! decorator">Hello
+<a name="toward_boost_interthreads.users_guide.getting_started.hello_world__decorator"></a><a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.hello_world__decorator" title="Hello World! decorator">Hello
         World! decorator</a>
 </h4></div></div></div>
 <p>
           This is a little bit more than a Hello World! example. It will also say
           Bye, Bye!
         </p>
-<pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&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>
+<pre class="programlisting"><span class="preprocessor">#include</span> <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>
 <span class="preprocessor">#include</span> <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">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
 
@@ -238,10 +231,9 @@
 Bye, Bye!
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id"></a><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id" title="Monotonic
- Thread Id">Monotonic
+<a name="toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id"></a><a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.monotonic_thread_id" title="Monotonic Thread Id">Monotonic
         Thread Id</a>
 </h4></div></div></div>
 <p>
@@ -258,8 +250,7 @@
           thread decorator. This setup function resets the specific pointer with
           the value of the monotonic counter which will be self increased.
         </p>
-<pre class="programlisting">
-<span class="preprocessor">#include</span> <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>
+<pre class="programlisting"><span class="preprocessor">#include</span> <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>
 <span class="preprocessor">#include</span> <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>
 <span class="preprocessor">#include</span> <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">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
@@ -302,8 +293,7 @@
           to a monotonic thread id mono_thread_id::id() and this id is accesible
           to other threads providing the boost::thread::id.
         </p>
-<pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">my_thread</span><span class="special">()</span> <span class="special">{</span>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">my_thread</span><span class="special">()</span> <span class="special">{</span>
     <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"mono_thread_id="</span> <span class="special">&lt;&lt;</span> <span class="identifier">mono_thread_id</span><span class="special">::</span><span class="identifier">id</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="identifier">sleep</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
 <span class="special">}</span>
@@ -335,17 +325,15 @@
 
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_interthreads.users_guide.getting_started.basic_keep_alive"></a><a href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.basic_keep_alive" title="Basic
- keep alive">Basic
+<a name="toward_boost_interthreads.users_guide.getting_started.basic_keep_alive"></a><a class="link" href="getting_started.html#toward_boost_interthreads.users_guide.getting_started.basic_keep_alive" title="Basic keep alive">Basic
         keep alive</a>
 </h4></div></div></div>
 <p>
           This example shows the keep_alive basics.
         </p>
-<pre class="programlisting">
-<span class="preprocessor">#include</span> <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>
+<pre class="programlisting"><span class="preprocessor">#include</span> <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>
 <span class="preprocessor">#include</span> <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">keep_alive</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <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">thread</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>

Modified: sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/glosary.html
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/glosary.html (original)
+++ sandbox/interthreads/libs/interthreads/doc/html/toward_boost_interthreads/users_guide/glosary.html 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,15 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Glossary</title>
+<title>Glossary</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../users_guide.html" title=" Users'Guide">
-<link rel="prev" href="bibliography.html" title="
- References">
-<link rel="next" href="../reference.html" title=" Reference">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="bibliography.html" title="References">
+<link rel="next" href="../reference.html" title="Reference">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -24,55 +22,55 @@
 <div class="spirit-nav">
 <a accesskey="p" href="bibliography.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.users_guide.glosary"></a> Glossary
+<a name="toward_boost_interthreads.users_guide.glosary"></a><a class="link" href="glosary.html" title="Glossary">Glossary</a>
 </h3></div></div></div>
 <div class="variablelist">
 <p class="title"><b></b></p>
 <dl>
 <dt><span class="term">alive (thread)</span></dt>
 <dd><p>
- a thread is considered alive when not dead.
- </p></dd>
+ a thread is considered alive when not dead.
+ </p></dd>
 <dt><span class="term">cleanup decoration</span></dt>
 <dd><p>
- function called at thread exit.
- </p></dd>
+ function called at thread exit.
+ </p></dd>
 <dt><span class="term">dead (thread)</span></dt>
 <dd><p>
- a thread is considered dead when has not done enough keep alive check
- points for a given duration.
- </p></dd>
+ a thread is considered dead when has not done enough keep alive check
+ points for a given duration.
+ </p></dd>
 <dt><span class="term">decoration</span></dt>
 <dd><p>
- Couple of setup/cleanup thread decorating functions.
- </p></dd>
+ Couple of setup/cleanup thread decorating functions.
+ </p></dd>
 <dt><span class="term">decorator</span></dt>
 <dd><p>
- Functor wrapper decorating a thread with all the setups and cleanups
- decorations.
- </p></dd>
+ Functor wrapper decorating a thread with all the setups and cleanups
+ decorations.
+ </p></dd>
 <dt><span class="term">deleter TSSS</span></dt>
 <dd><p>
- specific function used to delete the TSSS.
- </p></dd>
+ specific function used to delete the TSSS.
+ </p></dd>
 <dt><span class="term">KA</span></dt>
 <dd><p>
- Keep Alive.
- </p></dd>
+ Keep Alive.
+ </p></dd>
 <dt><span class="term">setup decoration</span></dt>
 <dd><p>
- function called before the thread starts.
- </p></dd>
+ function called before the thread starts.
+ </p></dd>
 <dt><span class="term">TSS</span></dt>
 <dd><p>
- Thread Specific Storage.
- </p></dd>
+ Thread Specific Storage.
+ </p></dd>
 <dt><span class="term">TSSS</span></dt>
 <dd><p>
- Thread Specific Shared Storage.
- </p></dd>
+ Thread Specific Shared Storage.
+ </p></dd>
 </dl>
 </div>
 </div>

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 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,16 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title> Tutorial</title>
+<title>Tutorial</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="../../index.html" title="Toward Boost.InterThreads">
-<link rel="up" href="../users_guide.html" title=" Users'Guide">
-<link rel="prev" href="getting_started.html" title="
- Getting Started">
-<link rel="next" href="bibliography.html" title="
- References">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Toward Boost.InterThreads">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="getting_started.html" title="Getting Started">
+<link rel="next" href="bibliography.html" title="References">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -25,9 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="getting_started.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial"></a> Tutorial
+<a name="toward_boost_interthreads.users_guide.tutorial"></a><a class="link" href="tutorial.html" title="Tutorial">Tutorial</a>
 </h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.thread_decorator">Thread
@@ -37,8 +34,8 @@
           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>
+<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>
@@ -64,14 +61,14 @@
 <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.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
@@ -80,20 +77,18 @@
 <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>
+<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">Interruption</span></dt>
 </dl></dd>
 </dl></div>
-<div class="section" lang="en">
+<div class="section">
 <div class="titlepage"><div><div><h4 class="title">
-<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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator"></a><a class="link" 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>
@@ -101,13 +96,12 @@
           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>
+<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="section">
 <div class="titlepage"><div><div><h5 class="title">
-<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 name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.declaring_a_decoration"></a><a class="link" 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>
 <p>
@@ -115,8 +109,7 @@
             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>
+<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>
@@ -128,51 +121,45 @@
             explained in more detail in the next sections.
           </p>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.creating_threads_with_decorators"></a><a class="link" 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 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>
             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>
+<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="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_decorator.decorator_explicit_call"></a><a class="link" 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>
+<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">// ...
 </span><span class="special">}</span>
 </pre>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer"></a><a class="link" 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>
@@ -191,24 +178,21 @@
 <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="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.key_initialization"></a><a class="link" 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 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="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.context_initialization"></a><a class="link" 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>
@@ -228,24 +212,22 @@
 <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>
-<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>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ 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">// ...
 </span> <span class="identifier">ptr</span><span class="special">.</span><span class="identifier">reset</span><span class="special">(</span><span class="identifier">p</span><span class="special">);</span>
     <span class="comment">// ...
 </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>
-<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>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ 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>
 <span class="special">}</span>
@@ -258,10 +240,9 @@
 <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>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<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 class="link" 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>
@@ -272,8 +253,7 @@
             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>
+<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">// ...
 </span> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">ptr</span><span class="special">.</span><span class="identifier">get</span><span class="special">()==</span><span class="number">0</span><span class="special">)</span> <span class="identifier">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>
@@ -282,18 +262,16 @@
 <span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<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 class="link" 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>
+<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>
@@ -307,16 +285,14 @@
             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>
+<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>
-<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>
+<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>
 <span class="special">}</span> <span class="keyword">while</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>
@@ -327,16 +303,13 @@
             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>
+<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>
-<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 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
@@ -344,8 +317,7 @@
             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>
+<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.
@@ -357,10 +329,9 @@
             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="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.iterating_through_all_the_thread_specific_context"></a><a class="link" 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>
@@ -370,18 +341,16 @@
             locking mechanism that 'ensure' that the map access is locked during
             the map query.
           </p>
-<pre class="programlisting">
-<span class="special">{</span>
+<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>
     <span class="comment">// use the map
 </span><span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.deleting_the_context"></a><a class="link" 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>
@@ -398,14 +367,12 @@
             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 !!!
+<pre class="programlisting"><span class="comment">// Add use of deleter !!!
 </span></pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_specific_shared_pointer.cleanup_at_thread_exit"></a><a class="link" 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>
@@ -427,29 +394,27 @@
             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!!!
+<pre class="programlisting"><span class="comment">// Add use of at thread_exit!!!
 </span></pre>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive"></a><a class="link" 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.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.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
@@ -477,15 +442,14 @@
           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="section">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.interface"></a>Interface
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.interface"></a><a class="link" href="tutorial.html#toward_boost_interthreads.users_guide.tutorial.keep_alive.interface" title="Interface">Interface</a>
 </h5></div></div></div>
 <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>
+<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>
@@ -513,10 +477,9 @@
 <span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_mechanism_initialization"></a><a class="link" 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>
@@ -524,8 +487,7 @@
             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>
+<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">// ...
 </span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">init</span><span class="special">();</span>
@@ -554,8 +516,7 @@
             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>
+<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>
@@ -563,8 +524,7 @@
             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>
+<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>
@@ -576,8 +536,7 @@
             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>
+<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>
 <span class="keyword">void</span> <span class="identifier">keep_alive_mgr</span><span class="special">::</span><span class="identifier">init</span><span class="special">()</span> <span class="special">{</span>
@@ -585,11 +544,10 @@
 <span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_threads"></a><a class="link" 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
@@ -601,8 +559,7 @@
             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>
+<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>
@@ -611,15 +568,13 @@
             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 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="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_enabling"></a><a class="link" 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
@@ -627,8 +582,7 @@
             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>
+<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>
 
     <span class="comment">// ...
@@ -643,19 +597,17 @@
 <span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_disabling"></a><a class="link" 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>
+<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>
 
     <span class="comment">// ...
@@ -682,8 +634,7 @@
             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>
+<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>
 
@@ -706,11 +657,10 @@
 <span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.keep_alive_persistent"></a><a class="link" 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.
@@ -719,8 +669,7 @@
             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>
+<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>
 
     <span class="comment">// ...
@@ -743,10 +692,9 @@
 </span><span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from_the_current_thread"></a><a class="link" 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>
@@ -756,8 +704,7 @@
             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>
+<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>
     <span class="identifier">backup_</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">backup</span><span class="special">(</span><span class="identifier">data_</span><span class="special">);</span>
@@ -780,8 +727,7 @@
 <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>
+<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>
     <span class="keyword">return</span> <span class="identifier">the_backup</span><span class="special">;</span>
@@ -807,8 +753,7 @@
             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>
+<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>
 
@@ -820,8 +765,7 @@
             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>
+<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>
 
@@ -831,10 +775,9 @@
     <span class="special">}</span>
 </pre>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.keep_alive.access_from__the_controller_thread"></a><a class="link" 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>
@@ -849,8 +792,7 @@
 <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 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
@@ -858,8 +800,7 @@
             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>
+<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>
     <span class="keyword">while</span><span class="special">(!</span><span class="identifier">end</span><span class="special">)</span> <span class="special">{</span>
@@ -883,8 +824,7 @@
             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>
+<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>
@@ -895,8 +835,7 @@
             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>
+<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>
         <span class="keyword">if</span> <span class="special">(</span><span class="identifier">dead</span><span class="special">())</span> <span class="special">{</span>
@@ -909,27 +848,24 @@
 </pre>
 </div>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple"></a><a class="link" 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_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>
+<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">Interruption</span></dt>
 </dl></div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_launching"></a><a class="link" 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
@@ -940,8 +876,7 @@
             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>
+<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>
 <span class="special">};</span>
@@ -967,8 +902,7 @@
             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>
+<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>
@@ -982,11 +916,10 @@
             specified by the Boost.Bind.
           </p>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_exceptions"></a><a class="link" 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
@@ -995,11 +928,10 @@
             is called.
           </p>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_joining"></a><a class="link" 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
@@ -1032,11 +964,9 @@
             interrupting the rest of the threads.
           </p>
 </div>
-<div class="section" lang="en">
+<div class="section">
 <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>
+<a name="toward_boost_interthreads.users_guide.tutorial.thread_tuple.thread_tuple_interruption"></a><a class="link" 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
@@ -1058,11 +988,9 @@
             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.
+ <a name="interruption_points"></a> See the Boost.Threads library for the Predefined
+ Interruption Points.
           </p>
 </div>
 </div>

Modified: sandbox/interthreads/libs/interthreads/doc/interthreads.qbk
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/interthreads.qbk (original)
+++ sandbox/interthreads/libs/interthreads/doc/interthreads.qbk 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -8,12 +8,13 @@
 
 [article Toward Boost.InterThreads
     [quickbook 1.5]
+ [version 0.1.3]
     [authors [Botet Escriba, Vicente J.]]
- [copyright 2008-2009 Vicente J. Botet Escriba]
- [purpose C++ Library extending the Boost.Thread library adding some inter threads mechanisms as
+ [copyright 2008-2009,2011 Vicente J. Botet Escriba]
+ [/purpose C++ Library extending the Boost.Thread library adding some inter threads mechanisms as
     asynchronous executors and asyncronous completion tokes framework with threaders/joiners, launcher.
     thread decorator, specific shared pointers and keep alive mechanism]
- [category text]
+ [/category text]
     [license
         Distributed under the Boost Software License, Version 1.0.
         (See accompanying file LICENSE_1_0.txt or copy at
@@ -161,6 +162,4 @@
 
 [include reference.qbk]
 
-[include case_studies.qbk]
-
 [include appendices.qbk]

Modified: sandbox/interthreads/libs/interthreads/doc/overview.qbk
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/overview.qbk (original)
+++ sandbox/interthreads/libs/interthreads/doc/overview.qbk 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -9,8 +9,43 @@
 [section:overview Overview]
 [/========================]
 
+
+[/====================================]
+[heading How to Use This Documentation]
+[/====================================]
+
+This documentation makes use of the following naming and formatting conventions.
+
+* Code is in `fixed width font` and is syntax-highlighted.
+* Replaceable text that you will need to supply is in [~italics].
+* If a name refers to a free function, it is specified like this:
+ `free_function()`; that is, it is in code font and its name is followed by `()`
+ to indicate that it is a free function.
+* If a name refers to a class template, it is specified like this:
+ `class_template<>`; that is, it is in code font and its name is followed by `<>`
+ to indicate that it is a class template.
+* If a name refers to a function-like macro, it is specified like this: `MACRO()`;
+ that is, it is uppercase in code font and its name is followed by `()` to
+ indicate that it is a function-like macro. Object-like macros appear without the
+ trailing `()`.
+* Names that refer to /concepts/ in the generic programming sense are
+ specified in CamelCase.
+
+[note In addition, notes such as this one specify non-essential information that
+provides additional background or rationale.]
+
+Finally, you can mentally add the following to any code fragments in this document:
+
+ // Include all of InterThreads
+ #include <boost/interthreads/interthreads.hpp>
+
+ // Create a namespace aliases
+ namespace bith = boost::interthreads;
+
+[include introduction.qbk]
+
 [/==================]
-[heading Description]
+[section Description]
 [/==================]
 
 __boost_interthreads__ extends __boost_thread__ adding some features:
@@ -44,39 +79,6 @@
 [note thread_decorator and thread_specific_shared_ptr are based on the original implementation of [@http://www.boost-consulting.com/vault/index.php?directory=Concurrent%20Programming [*threadalert]]
 written by Roland Schwarz.]
 
+[endsect]
 
-
-[/====================================]
-[heading How to Use This Documentation]
-[/====================================]
-
-This documentation makes use of the following naming and formatting conventions.
-
-* Code is in `fixed width font` and is syntax-highlighted.
-* Replaceable text that you will need to supply is in [~italics].
-* If a name refers to a free function, it is specified like this:
- `free_function()`; that is, it is in code font and its name is followed by `()`
- to indicate that it is a free function.
-* If a name refers to a class template, it is specified like this:
- `class_template<>`; that is, it is in code font and its name is followed by `<>`
- to indicate that it is a class template.
-* If a name refers to a function-like macro, it is specified like this: `MACRO()`;
- that is, it is uppercase in code font and its name is followed by `()` to
- indicate that it is a function-like macro. Object-like macros appear without the
- trailing `()`.
-* Names that refer to /concepts/ in the generic programming sense are
- specified in CamelCase.
-
-[note In addition, notes such as this one specify non-essential information that
-provides additional background or rationale.]
-
-Finally, you can mentally add the following to any code fragments in this document:
-
- // Include all of InterThreads
- #include <boost/interthreads/interthreads.hpp>
-
- // Create a namespace aliases
- namespace bith = boost::interthreads;
-
-[include introduction.qbk]
 [endsect]

Modified: sandbox/interthreads/libs/interthreads/doc/rationale.qbk
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/rationale.qbk (original)
+++ sandbox/interthreads/libs/interthreads/doc/rationale.qbk 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -10,7 +10,7 @@
 [/=======================================]
 
 [/=======================]
-[section Thread Decorator]
+[section:decorator Thread Decorator]
 [/=======================]
 
 [variablelist
@@ -26,7 +26,7 @@
 [endsect]
 
 [/==============================]
-[section Thread Specific Storage]
+[section:tss Thread Specific Storage]
 [/==============================]
 
 [variablelist
@@ -69,11 +69,11 @@
 ]
 
 [/==============================]
-[heading Comparaing TSSS and TSS]
+[heading:hcmp_tss Comparaing TSSS and TSS]
 [/==============================]
 
 
-[table Comparaing TSSS and TSS
+[table:tcmp_tss Comparaing TSSS and TSS
 [[Feature][thread_specific_shared_ptr][thread_specific_ptr][Compatible]]
 [[ownership][shared][exclusive][no]]
 [[default constructor][[*yes]][[*yes]][[*yes]]]
@@ -97,7 +97,7 @@
 [endsect]
 
 [/=================]
-[section Keep Alive]
+[section:ka Keep Alive]
 [/=================]
 
 [variablelist
@@ -121,7 +121,7 @@
 
 
 [/===================]
-[section Thread Tuple]
+[section:tuple Thread Tuple]
 [/===================]
 
 [variablelist
@@ -166,11 +166,11 @@
 ]
 
 [/=======================================================]
-[heading Comparaing thread, thread_group and thread_tuple]
+[heading:hcmp_thread Comparaing thread, thread_group and thread_tuple]
 [/=======================================================]
 
 
-[table Comparaing thread, thread_group and thread_tuple
+[table:tcmp_thread Comparaing thread, thread_group and thread_tuple
 [[Feature][thread][thread_group][thread_tuple][Compatible]]
 [[default constructor][[*yes]][[*yes]][[*yes]][[*yes]]]
 [[copiable][no][no][no][[*yes]]]

Modified: sandbox/interthreads/libs/interthreads/doc/users_guide.qbk
==============================================================================
--- sandbox/interthreads/libs/interthreads/doc/users_guide.qbk (original)
+++ sandbox/interthreads/libs/interthreads/doc/users_guide.qbk 2011-02-16 14:38:13 EST (Wed, 16 Feb 2011)
@@ -1,4 +1,4 @@
-[/
+
 [/
   (C) Copyright 2008-2009 Vicente J. Botet Escriba
   Distributed under the Boost Software License, Version 1.0.
@@ -13,6 +13,7 @@
 [include getting_started.qbk]
 [include tutorial.qbk]
 
+[include case_studies.qbk]
 
 [/==============================]
 [section:bibliography References]
@@ -48,4 +49,4 @@
 
 [endsect]
 
-[endsect]
\ No newline at end of file
+[endsect]


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