$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r51822 - in sandbox/threadpool: boost boost/tp boost/tp/detail libs/tp/doc libs/tp/doc/html libs/tp/doc/html/boost_threadpool libs/tp/test
From: oliver.kowalke_at_[hidden]
Date: 2009-03-17 15:07:49
Author: olli
Date: 2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
New Revision: 51822
URL: http://svn.boost.org/trac/boost/changeset/51822
Log:
* future.hpp modified for ios::failure
Text files modified: 
   sandbox/threadpool/boost/future.hpp                                  |     8                                         
   sandbox/threadpool/boost/tp.hpp                                      |     2                                         
   sandbox/threadpool/boost/tp/detail/atomic.hpp                        |     8                                         
   sandbox/threadpool/boost/tp/lockfree_channel.hpp                     |     7                                         
   sandbox/threadpool/libs/tp/doc/channel.qbk                           |     2                                         
   sandbox/threadpool/libs/tp/doc/html/boost_threadpool/channel.html    |    23 +-                                      
   sandbox/threadpool/libs/tp/doc/html/boost_threadpool/pool.html       |    30 ++--                                    
   sandbox/threadpool/libs/tp/doc/html/boost_threadpool/reference.html  |   260 ++++++++++++++++++++++++++++++++--------
   sandbox/threadpool/libs/tp/doc/html/boost_threadpool/scheduling.html |     8                                         
   sandbox/threadpool/libs/tp/doc/html/boost_threadpool/task.html       |    23 ++                                      
   sandbox/threadpool/libs/tp/doc/html/index.html                       |     2                                         
   sandbox/threadpool/libs/tp/test/Jamfile.v2                           |     2                                         
   12 files changed, 275 insertions(+), 100 deletions(-)
Modified: sandbox/threadpool/boost/future.hpp
==============================================================================
--- sandbox/threadpool/boost/future.hpp	(original)
+++ sandbox/threadpool/boost/future.hpp	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -1211,6 +1211,8 @@
                                         { this->mark_finished_with_result(f()); }
                                         CATCH_ENABLE_CURRENT_EXCEPTION( boost::thread_interrupted)
                                         CATCH_ENABLE_CURRENT_EXCEPTION( boost::exception)
+
+					CATCH_ENABLE_CURRENT_EXCEPTION( std::ios_base::failure)
         
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::domain_error)
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::invalid_argument)
@@ -1227,8 +1229,6 @@
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::bad_cast)
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::bad_typeid)
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::bad_exception)
-
-					CATCH_ENABLE_CURRENT_EXCEPTION( std::ios_base::failure)
                 }
                 catch(...)
                 {
@@ -1260,6 +1260,8 @@
                                         }
                                         CATCH_ENABLE_CURRENT_EXCEPTION( boost::thread_interrupted)
                                         CATCH_ENABLE_CURRENT_EXCEPTION( boost::exception)
+
+					CATCH_ENABLE_CURRENT_EXCEPTION( std::ios_base::failure)
         
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::domain_error)
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::invalid_argument)
@@ -1276,8 +1278,6 @@
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::bad_cast)
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::bad_typeid)
                                         CATCH_ENABLE_CURRENT_EXCEPTION( std::bad_exception)
-
-					CATCH_ENABLE_CURRENT_EXCEPTION( std::ios_base::failure)
                 }
                 catch(...)
                 {
Modified: sandbox/threadpool/boost/tp.hpp
==============================================================================
--- sandbox/threadpool/boost/tp.hpp	(original)
+++ sandbox/threadpool/boost/tp.hpp	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -12,7 +12,7 @@
 #include <boost/tp/info.hpp>
 #include <boost/tp/lifo.hpp>
 #include <boost/tp/launch.hpp>
-#include <boost/tp/lockfree_channel.hpp>
+//#include <boost/tp/lockfree_channel.hpp>
 #include <boost/tp/pool.hpp>
 #include <boost/tp/poolsize.hpp>
 #include <boost/tp/priority.hpp>
Modified: sandbox/threadpool/boost/tp/detail/atomic.hpp
==============================================================================
--- sandbox/threadpool/boost/tp/detail/atomic.hpp	(original)
+++ sandbox/threadpool/boost/tp/detail/atomic.hpp	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -20,19 +20,19 @@
 
 inline
 void atomic_write_32( volatile unsigned int * object, unsigned int desired)
-{ InterlockedExchange( ( volatile LONG *) object, desired); }
+{ InterlockedExchange( reinterpret_cast< volatile LONG * >( object), desired); }
 
 template< typename T >
 void atomic_write_ptr( volatile T * object, T desired)
-{ InterlockedExchangePointer( ( volatile LONG *) object, desired); }
+{ InterlockedExchangePointer( reinterpret_cast< volatile LONG * >( object), desired); }
 
 inline
 unsigned int atomic_inc_32( volatile unsigned int * object)
-{ return InterlockedIncrement( ( volatile LONG *) object); }
+{ return InterlockedIncrement( reinterpret_cast< volatile LONG * >( object) ); }
 
 inline
 unsigned int atomic_dec_32( volatile unsigned int * object)
-{ return InterlockedDecrement( ( volatile LONG *) object); }
+{ return InterlockedDecrement( reinterpret_cast< volatile LONG * >( object) ); }
 
 #elif defined(__hpux)
 
Modified: sandbox/threadpool/boost/tp/lockfree_channel.hpp
==============================================================================
--- sandbox/threadpool/boost/tp/lockfree_channel.hpp	(original)
+++ sandbox/threadpool/boost/tp/lockfree_channel.hpp	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -141,13 +141,14 @@
 
         void put( item const& itm)
         {
-		if ( ! active() )
-			throw task_rejected("channel is not active");
-
                 pointer_t tail;
                 node_t * node( new node_t( itm) );
                 while ( active() )
+		for(;;)
                 {
+			if ( ! active() )
+				throw task_rejected("channel is not active");
+			
                         tail = pointer_t( tail_);
                         node->next = pointer_t( tail.ptr, tail.tag + 1);
                         pointer_t ntail( node, tail.tag + 1);
Modified: sandbox/threadpool/libs/tp/doc/channel.qbk
==============================================================================
--- sandbox/threadpool/libs/tp/doc/channel.qbk	(original)
+++ sandbox/threadpool/libs/tp/doc/channel.qbk	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -9,11 +9,13 @@
 The channel synchronizes the access between application threads (producer threads) submitting __actions__ to the pool and __worker_threads__ (consumer threads). The scheduling of __actions__ queued into the channel depends on channels scheduling policy.
 If the channel becomes empty all __worker_threads__ are set to sleep until a new __action__ is put in.
 
+[/
 [heading lockfree channel]
 
         class lockfree_channel
 
 Uses internaly a lockfree algorithm in order to get a fifo queue.
+]
 
 [heading bounded channel]
 
Modified: sandbox/threadpool/libs/tp/doc/html/boost_threadpool/channel.html
==============================================================================
--- sandbox/threadpool/libs/tp/doc/html/boost_threadpool/channel.html	(original)
+++ sandbox/threadpool/libs/tp/doc/html/boost_threadpool/channel.html	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -29,20 +29,20 @@
 <p>
       The channel synchronizes the access between application threads (producer threads)
       submitting actions to the pool and worker threads (consumer threads). The scheduling
-      of actions queued into the channel depends on channels the scheduling policy.
-      If the channel becomes empty all worker threads are set to sleep until a new
-      action is put in.
+      of actions queued into the channel depends on channels scheduling policy. If
+      the channel becomes empty all worker threads are set to sleep until a new action
+      is put in.
     </p>
 <a name="boost_threadpool.channel.bounded_channel"></a><h4>
-<a name="id372246"></a>
+<a name="id372399"></a>
       <a class="link" href="channel.html#boost_threadpool.channel.bounded_channel">bounded channel</a>
     </h4>
 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">SchedulingPolicy</span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">bounded_channel</span>
 </pre>
 <p>
-      The number of pending actions is limited in order to prevent resource exhaustion.
-      For this purpose a high and low watermark has to be passed at construction.
-      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">high_watermark</span></code>
+      Contains a single lock in order to synchronize access to the queue. The number
+      of pending actions is limited in order to prevent resource exhaustion. For
+      this purpose a high and low watermark has to be passed at construction. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">high_watermark</span></code>
       sets the maximum of pending tasks. If this limited is reached all threads which
       submit a tasks will be set to sleep (blocked). <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">low_watermark</span></code> sets the threshold when blocked
       threads get woken up. If high watermark is equal to low watermark everytime
@@ -52,15 +52,16 @@
       tasks reaches low watermark.
     </p>
 <a name="boost_threadpool.channel.unbounded_channel"></a><h4>
-<a name="id372359"></a>
+<a name="id372512"></a>
       <a class="link" href="channel.html#boost_threadpool.channel.unbounded_channel">unbounded channel</a>
     </h4>
 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">SchedulingPolicy</span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">unbounded_channel</span>
 </pre>
 <p>
-      An unlimited number of actions can be queued into this channel. The insertion
-      of actions will never block. If the channel becomes empty worker threads will
-      be set to sleep until new actions are inserted into the channel.
+      Contains a single lock in order to synchronize access to the queue. An unlimited
+      number of actions can be queued into this channel. The insertion of actions
+      will never block. If the channel becomes empty worker threads will be set to
+      sleep until new actions are inserted into the channel.
     </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/threadpool/libs/tp/doc/html/boost_threadpool/pool.html
==============================================================================
--- sandbox/threadpool/libs/tp/doc/html/boost_threadpool/pool.html	(original)
+++ sandbox/threadpool/libs/tp/doc/html/boost_threadpool/pool.html	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -167,11 +167,9 @@
       <a class="link" href="pool.html#boost_threadpool.pool.shutdown">Shutdown</a>
     </h4>
 <p>
-      If <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span> <span class="identifier">Channel</span> <span class="special">>::</span><span class="identifier">shutdown</span><span class="special">()</span></code> is called - the the status of the pool is
-      set to <span class="emphasis"><em>terminating</em></span> and all worker threads are joined.
-      No futher actions can be submitted by application threads. After all pending
-      actions are processed and all worker threads are joined, the pool is set to
-      status <span class="emphasis"><em>terminated</em></span>.
+      If <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span> <span class="identifier">Channel</span> <span class="special">>::</span><span class="identifier">shutdown</span><span class="special">()</span></code> is called - the the pool is set closed and
+      all worker threads are joined until all pending actions are processed. No futher
+      actions can be submitted by application threads.
     </p>
 <div class="note"><table border="0" summary="Note">
 <tr>
@@ -204,14 +202,12 @@
 </span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">t2</span><span class="special">.</span><span class="identifier">result</span><span class="special">().</span><span class="identifier">get</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 55
 </span></pre>
 <a name="boost_threadpool.pool.shutdown_immediatly"></a><h4>
-<a name="id368800"></a>
+<a name="id368794"></a>
       <a class="link" href="pool.html#boost_threadpool.pool.shutdown_immediatly">Shutdown immediatly</a>
     </h4>
 <p>
-      The function <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span> <span class="identifier">Channel</span> <span class="special">>::</span><span class="identifier">shutdown_now</span><span class="special">()</span></code> sets the pool status to <span class="emphasis"><em>terminating</em></span>
-      interrupts and then joins all worker threads. After the worker threads are
-      joined the status of the pool is set to <span class="emphasis"><em>terminated</em></span> and
-      all pending (unprocessed) actions will be returned.
+      The function <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">pool</span><span class="special"><</span> <span class="identifier">Channel</span> <span class="special">>::</span><span class="identifier">shutdown_now</span><span class="special">()</span></code> closes the pool, interrupts and then joins
+      all worker threads. All pending (unprocessed) actions will be returned.
     </p>
 <div class="important"><table border="0" summary="Important">
 <tr>
@@ -225,7 +221,7 @@
       </p></td></tr>
 </table></div>
 <a name="boost_threadpool.pool.default_pool"></a><h4>
-<a name="id368934"></a>
+<a name="id368921"></a>
       <a class="link" href="pool.html#boost_threadpool.pool.default_pool">Default pool</a>
     </h4>
 <p>
@@ -234,8 +230,16 @@
       as <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">hardware_concurrency</span><span class="special">()</span></code>
       returns.
     </p>
+<a name="boost_threadpool.pool.launch_in_pool"></a><h4>
+<a name="id369084"></a>
+      <a class="link" href="pool.html#boost_threadpool.pool.launch_in_pool">Launch in pool</a>
+    </h4>
+<p>
+      The free function <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">launch_in_pool</span><span class="special">(</span> <span class="identifier">Act</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span></code> submits the action to the default pool and
+      returns a task object.
+    </p>
 <a name="boost_threadpool.pool.meta_functions"></a><h4>
-<a name="id369097"></a>
+<a name="id369155"></a>
       <a class="link" href="pool.html#boost_threadpool.pool.meta_functions">Meta functions</a>
     </h4>
 <p>
@@ -259,7 +263,7 @@
 <pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special"><<</span>  <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">has_fibers</span><span class="special"><</span> <span class="identifier">pool_type</span> <span class="special">>::</span><span class="identifier">value</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
 </pre>
 <a name="boost_threadpool.pool.processor_binding"></a><h4>
-<a name="id369670"></a>
+<a name="id369728"></a>
       <a class="link" href="pool.html#boost_threadpool.pool.processor_binding">Processor binding</a>
     </h4>
 <p>
Modified: sandbox/threadpool/libs/tp/doc/html/boost_threadpool/reference.html
==============================================================================
--- sandbox/threadpool/libs/tp/doc/html/boost_threadpool/reference.html	(original)
+++ sandbox/threadpool/libs/tp/doc/html/boost_threadpool/reference.html	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -77,10 +77,8 @@
         <code class="computeroutput"><span class="identifier">shutdown</span><span class="special">()</span></code></a></span></dt>
 <dt><span class="section"><a href="reference.html#boost_threadpool.reference.pool.shutdown_now"> Member
         function <code class="computeroutput"><span class="identifier">shutdown_now</span><span class="special">()</span></code></a></span></dt>
-<dt><span class="section"><a href="reference.html#boost_threadpool.reference.pool.terminated"> Member
-        function <code class="computeroutput"><span class="identifier">terminated</span><span class="special">()</span></code></a></span></dt>
-<dt><span class="section"><a href="reference.html#boost_threadpool.reference.pool.terminateing"> Member
-        function <code class="computeroutput"><span class="identifier">terminateing</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference.html#boost_threadpool.reference.pool.losed"> Member function
+        <code class="computeroutput"><span class="identifier">closed</span><span class="special">()</span></code></a></span></dt>
 <dt><span class="section"><a href="reference.html#boost_threadpool.reference.pool.clear"> Member function
         <code class="computeroutput"><span class="identifier">clear</span><span class="special">()</span></code></a></span></dt>
 <dt><span class="section"><a href="reference.html#boost_threadpool.reference.pool.empty"> Member function
@@ -105,6 +103,9 @@
         <span class="identifier">Act</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Attr</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span></code></a></span></dt>
 <dt><span class="section"><a href="reference.html#boost_threadpool.reference.pool.get_default_pool">
         Non-member function <code class="computeroutput"><span class="identifier">get_default_pool</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference.html#boost_threadpool.reference.pool.launch_in_pool"> Non-member
+        function <code class="computeroutput"><span class="identifier">launch_in_pool</span><span class="special">(</span>
+        <span class="identifier">Act</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span></code></a></span></dt>
 </dl></div>
 <pre class="programlisting">   <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tp</span><span class="special">/</span><span class="identifier">pool</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 
@@ -145,8 +146,7 @@
      <span class="keyword">void</span> <span class="identifier">shutdown</span><span class="special">();</span>
      <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span> <span class="identifier">callable</span> <span class="special">></span> <span class="identifier">shutdown_now</span><span class="special">();</span>
 
-     <span class="keyword">bool</span> <span class="identifier">terminated</span><span class="special">();</span>
-     <span class="keyword">bool</span> <span class="identifier">terminateing</span><span class="special">();</span>
+     <span class="keyword">bool</span> <span class="identifier">closed</span><span class="special">();</span>
      <span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
      <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">();</span>
      <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">pending</span><span class="special">();</span>
@@ -166,6 +166,9 @@
    <span class="special">};</span>
 
 <span class="identifier">pool</span><span class="special"><</span> <span class="identifier">unbounded_channel</span><span class="special"><</span> <span class="identifier">fifo</span> <span class="special">></span> <span class="special">></span> <span class="special">&</span> <span class="identifier">get_default_pool</span><span class="special">();</span>
+
+<span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Act</span> <span class="special">></span>
+<span class="identifier">task</span><span class="special"><</span> <span class="identifier">R</span> <span class="special">></span> <span class="identifier">launch_in_pool</span><span class="special">(</span> <span class="identifier">Act</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
 </pre>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
@@ -406,9 +409,7 @@
 <dl>
 <dt><span class="term">Effects:</span></dt>
 <dd><p>
-              Changes the pool state to <span class="emphasis"><em>terminating</em></span>, deactivates
-              the channel and joins all worker threads. The status of the pool is
-              assigned to <span class="emphasis"><em>terminated</em></span> at the end.
+              Deactivates the channel and joins all worker threads. The pool is closed.
             </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
@@ -433,10 +434,8 @@
 <dl>
 <dt><span class="term">Effects:</span></dt>
 <dd><p>
-              Changes the pool state to <span class="emphasis"><em>terminating</em></span>, deactivates
-              the channel, send interruption request to all worker threads and joins
-              them. The status of the pool is assigned to <span class="emphasis"><em>terminated</em></span>
-              at the end.
+              Deactivates the channel, send interruption request to all worker threads
+              and joins them. The pool is closed.
             </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
@@ -451,39 +450,17 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_threadpool.reference.pool.terminated"></a><a class="link" href="reference.html#boost_threadpool.reference.pool.terminated" title="Member function terminated()"> Member
-        function <code class="computeroutput"><span class="identifier">terminated</span><span class="special">()</span></code></a>
-</h4></div></div></div>
-<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">terminated</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>
-              Queries if the pool is in the terminated state (pool is shutdown).
-            </p></dd>
-<dt><span class="term">Throws:</span></dt>
-<dd><p>
-              Nothing
-            </p></dd>
-</dl>
-</div>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_threadpool.reference.pool.terminateing"></a><a class="link" href="reference.html#boost_threadpool.reference.pool.terminateing" title="Member function terminateing()"> Member
-        function <code class="computeroutput"><span class="identifier">terminateing</span><span class="special">()</span></code></a>
+<a name="boost_threadpool.reference.pool.losed"></a><a class="link" href="reference.html#boost_threadpool.reference.pool.losed" title="Member function closed()"> Member function
+        <code class="computeroutput"><span class="identifier">closed</span><span class="special">()</span></code></a>
 </h4></div></div></div>
-<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">terminateing</span><span class="special">();</span>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">closed</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>
-              Queries if the pool is in the terminating state (tries to shutdown
-              the pool).
+              Queries if the pool is closed (pool is shutdown).
             </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
@@ -710,8 +687,7 @@
 <dl>
 <dt><span class="term">Preconditions:</span></dt>
 <dd><p>
-              has_priority< pool >::value == false && ! ( pool.terminating()
-              || pool.terminated() )
+              has_priority< pool >::value == false && ! closed()
             </p></dd>
 <dt><span class="term">Effects:</span></dt>
 <dd><p>
@@ -739,8 +715,7 @@
 <dl>
 <dt><span class="term">Preconditions:</span></dt>
 <dd><p>
-              has_priority< pool >::value == true && ! ( pool.terminating()
-              || pool.terminated() )
+              has_priority< pool >::value == true && ! closed()
             </p></dd>
 <dt><span class="term">Effects:</span></dt>
 <dd><p>
@@ -772,6 +747,34 @@
 </dl>
 </div>
 </div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_threadpool.reference.pool.launch_in_pool"></a><a class="link" href="reference.html#boost_threadpool.reference.pool.launch_in_pool" title="Non-member function launch_in_pool( Act const& act)"> Non-member
+        function <code class="computeroutput"><span class="identifier">launch_in_pool</span><span class="special">(</span>
+        <span class="identifier">Act</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">act</span><span class="special">)</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Act</span> <span class="special">></span>
+<span class="identifier">task</span><span class="special"><</span> <span class="identifier">R</span> <span class="special">></span> <span class="identifier">launch_in_pool</span><span class="special">(</span> <span class="identifier">Act</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">act</span><span class="special">);</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Preconditions:</span></dt>
+<dd><p>
+              has_priority< pool >::value == false && ! closed()
+            </p></dd>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+              Submits an action to the default pool and returns a <a class="link" href="task.html" title="Task"><span class="emphasis"><em>task</em></span></a>
+              object.
+            </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">tp</span><span class="special">::</span><span class="identifier">task_rejected</span></code>
+            </p></dd>
+</dl>
+</div>
+</div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
@@ -783,8 +786,20 @@
         function <code class="computeroutput"><span class="identifier">interrupt</span><span class="special">()</span></code></a></span></dt>
 <dt><span class="section"><a href="reference.html#boost_threadpool.reference.task.interrupt_and_wait">
         Member function <code class="computeroutput"><span class="identifier">interrupt_and_wait</span><span class="special">()</span></code></a></span></dt>
-<dt><span class="section"><a href="reference.html#boost_threadpool.reference.task.result"> Member function
-        <code class="computeroutput"><span class="identifier">result</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference.html#boost_threadpool.reference.task.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#boost_threadpool.reference.task.is_read"> Member function
+        <code class="computeroutput"><span class="identifier">is_ready</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference.html#boost_threadpool.reference.task.has_value"> Member
+        function <code class="computeroutput"><span class="identifier">has_value</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference.html#boost_threadpool.reference.task.has_exception"> Member
+        function <code class="computeroutput"><span class="identifier">has_exception</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference.html#boost_threadpool.reference.task.wait"> Member function
+        <code class="computeroutput"><span class="identifier">wait</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference.html#boost_threadpool.reference.task.timed_wait"> Member
+        function <code class="computeroutput"><span class="identifier">timed_wait</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference.html#boost_threadpool.reference.task.timed_wait_until">
+        Member function <code class="computeroutput"><span class="identifier">timed_wait_until</span><span class="special">()</span></code></a></span></dt>
 </dl></div>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tp</span><span class="special">/</span><span class="identifier">task</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 
@@ -795,7 +810,7 @@
   <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Pool</span> <span class="special">></span>
   <span class="identifier">task</span><span class="special">(</span>
     <span class="identifier">Pool</span> <span class="special">*</span> <span class="identifier">pool</span><span class="special">,</span>
-    <span class="identifier">shared_future</span><span class="special"><</span> <span class="identifier">R</span> <span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">fut</span><span class="special">,</span>
+    <span class="identifier">future</span><span class="special"><</span> <span class="identifier">R</span> <span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">fut</span><span class="special">,</span>
     <span class="identifier">detail</span><span class="special">::</span><span class="identifier">interrupter</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">intr</span><span class="special">);</span>
 
   <span class="keyword">void</span> <span class="identifier">interrupt</span><span class="special">();</span>
@@ -805,7 +820,16 @@
   <span class="keyword">void</span> <span class="identifier">interrupt_and_wait</span><span class="special">(</span> <span class="identifier">Duration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">);</span>
   <span class="keyword">bool</span> <span class="identifier">interrupt_requested</span><span class="special">();</span>
 
-  <span class="identifier">shared_future</span><span class="special"><</span> <span class="identifier">R</span> <span class="special">></span> <span class="identifier">result</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+  <span class="identifier">R</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+  <span class="keyword">bool</span> <span class="identifier">is_ready</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+  <span class="keyword">bool</span> <span class="identifier">has_value</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+  <span class="keyword">bool</span> <span class="identifier">has_exception</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+  <span class="keyword">void</span> <span class="identifier">wait</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> 
+  <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Duration</span> <span class="special">></span>
+  <span class="keyword">bool</span> <span class="identifier">timed_wait</span><span class="special">(</span> <span class="identifier">Duration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rel_time</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+  <span class="keyword">bool</span> <span class="identifier">timed_wait_until</span><span class="special">(</span> <span class="identifier">system_time</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">abs_time</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 
 <span class="special">};</span>
 </pre>
 <div class="section" lang="en">
@@ -815,7 +839,7 @@
 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Pool</span> <span class="special">></span>
 <span class="identifier">task</span><span class="special">(</span>
   <span class="identifier">Pool</span> <span class="special">*</span> <span class="identifier">pool</span><span class="special">,</span>
-  <span class="identifier">shared_future</span><span class="special"><</span> <span class="identifier">R</span> <span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">fut</span><span class="special">,</span>
+  <span class="identifier">future</span><span class="special"><</span> <span class="identifier">R</span> <span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">fut</span><span class="special">,</span>
   <span class="identifier">detail</span><span class="special">::</span><span class="identifier">interrupter</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">intr</span><span class="special">);</span>
 </pre>
 <div class="variablelist">
@@ -892,17 +916,17 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_threadpool.reference.task.result"></a><a class="link" href="reference.html#boost_threadpool.reference.task.result" title="Member function result()"> Member function
-        <code class="computeroutput"><span class="identifier">result</span><span class="special">()</span></code></a>
+<a name="boost_threadpool.reference.task.get"></a><a class="link" href="reference.html#boost_threadpool.reference.task.get" title="Member function get()"> Member function
+        <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code></a>
 </h4></div></div></div>
-<pre class="programlisting"><span class="identifier">shared_future</span><span class="special"><</span> <span class="identifier">R</span> <span class="special">></span> <span class="identifier">result</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<pre class="programlisting"><span class="identifier">R</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">Effects:</span></dt>
 <dd><p>
-              Returns fulfilled value or throws fulfilled exception via a shared_future.
+              Returns fulfilled value or throws fulfilled exception.
             </p></dd>
 <dt><span class="term">Throws:</span></dt>
 <dd><p>
@@ -911,6 +935,138 @@
 </dl>
 </div>
 </div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_threadpool.reference.task.is_read"></a><a class="link" href="reference.html#boost_threadpool.reference.task.is_read" title="Member function is_ready()"> Member function
+        <code class="computeroutput"><span class="identifier">is_ready</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">is_ready</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+              Queries if the action has been fulfilled.
+            </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+              Nothing
+            </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_threadpool.reference.task.has_value"></a><a class="link" href="reference.html#boost_threadpool.reference.task.has_value" title="Member function has_value()"> Member
+        function <code class="computeroutput"><span class="identifier">has_value</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">has_value</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+              Queries if the action has been fulfilled (is ready) and has a value.
+            </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+              Nothing
+            </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_threadpool.reference.task.has_exception"></a><a class="link" href="reference.html#boost_threadpool.reference.task.has_exception" title="Member function has_exception()"> Member
+        function <code class="computeroutput"><span class="identifier">has_exception</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">has_exception</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Effects:</span></dt>
+<dd><p>
+              Queries if the action has been fulfilled (is ready) and has an exception.
+            </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+              Nothing
+            </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_threadpool.reference.task.wait"></a><a class="link" href="reference.html#boost_threadpool.reference.task.wait" title="Member function wait()"> Member function
+        <code class="computeroutput"><span class="identifier">wait</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">wait</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 result is ready.
+            </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+              Throws thread_interrupted if the result is not ready at the point of
+              the call, and the current thread is interrupted.
+            </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_threadpool.reference.task.timed_wait"></a><a class="link" href="reference.html#boost_threadpool.reference.task.timed_wait" title="Member function timed_wait()"> Member
+        function <code class="computeroutput"><span class="identifier">timed_wait</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Duration</span> <span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">timed_wait</span><span class="special">(</span> <span class="identifier">Duration</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">wait_duration</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 result is ready, or returns false if the time specified
+              by wait_duration has elapsed.
+            </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+              Throws thread_interrupted if the result is not ready at the point of
+              the call, and the current thread is interrupted.
+            </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_threadpool.reference.task.timed_wait_until"></a><a class="link" href="reference.html#boost_threadpool.reference.task.timed_wait_until" title="Member function timed_wait_until()">
+        Member function <code class="computeroutput"><span class="identifier">timed_wait_until</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">timed_wait_until</span><span class="special">(</span> <span class="identifier">system_time</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">wait_timeout</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 result is ready, or returns false if the time point
+              specified by wait_timeout has passed.
+            </p></dd>
+<dt><span class="term">Throws:</span></dt>
+<dd><p>
+              Throws thread_interrupted if the result is not ready at the point of
+              the call, and the current thread is interrupted.
+            </p></dd>
+</dl>
+</div>
+</div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
Modified: sandbox/threadpool/libs/tp/doc/html/boost_threadpool/scheduling.html
==============================================================================
--- sandbox/threadpool/libs/tp/doc/html/boost_threadpool/scheduling.html	(original)
+++ sandbox/threadpool/libs/tp/doc/html/boost_threadpool/scheduling.html	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -30,7 +30,7 @@
       The scheduling policy determines how actions are scheduled inside the <a class="link" href="channel.html" title="Channel"><span class="emphasis"><em>channel</em></span></a>.
     </p>
 <a name="boost_threadpool.scheduling.fifo"></a><h4>
-<a name="id372440"></a>
+<a name="id372594"></a>
       <a class="link" href="scheduling.html#boost_threadpool.scheduling.fifo">fifo</a>
     </h4>
 <pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">fifo</span>
@@ -39,7 +39,7 @@
       First inserted pending action get taken first.
     </p>
 <a name="boost_threadpool.scheduling.lifo"></a><h4>
-<a name="id372473"></a>
+<a name="id372627"></a>
       <a class="link" href="scheduling.html#boost_threadpool.scheduling.lifo">lifo</a>
     </h4>
 <pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">lifo</span>
@@ -48,7 +48,7 @@
       Last inserted pending action get taken first.
     </p>
 <a name="boost_threadpool.scheduling.priority"></a><h4>
-<a name="id372506"></a>
+<a name="id372660"></a>
       <a class="link" href="scheduling.html#boost_threadpool.scheduling.priority">priority</a>
     </h4>
 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Attr</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Ord</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special"><</span> <span class="identifier">Attr</span> <span class="special">></span> <span class="special">></span> <span class="keyword">struct</span> <span class="identifier">priority</span>
@@ -58,7 +58,7 @@
       ordering actions.
     </p>
 <a name="boost_threadpool.scheduling.smart"></a><h4>
-<a name="id372612"></a>
+<a name="id372766"></a>
       <a class="link" href="scheduling.html#boost_threadpool.scheduling.smart">smart</a>
     </h4>
 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Attr</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Ord</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enq</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Deq</span> <span class="special">></span> <span class="keyword">struct</span> <span class="identifier">smart</span>
Modified: sandbox/threadpool/libs/tp/doc/html/boost_threadpool/task.html
==============================================================================
--- sandbox/threadpool/libs/tp/doc/html/boost_threadpool/task.html	(original)
+++ sandbox/threadpool/libs/tp/doc/html/boost_threadpool/task.html	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -45,10 +45,10 @@
   <span class="identifier">fibonacci_fn</span><span class="special">,</span>
   <span class="number">10</span><span class="special">)</span> <span class="special">)</span> <span class="special">);</span>
 
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">result</span><span class="special">().</span><span class="identifier">get</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 55
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 55
 </span></pre>
 <a name="boost_threadpool.task.interruption"></a><h4>
-<a name="id370144"></a>
+<a name="id370194"></a>
       <a class="link" href="task.html#boost_threadpool.task.interruption">Interruption</a>
     </h4>
 <p>
@@ -97,7 +97,7 @@
 </span><span class="identifier">t</span><span class="special">.</span><span class="identifier">interrupt</span><span class="special">();</span>
 
 <span class="comment">// throws boost::thread_interrupted exception
-</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">result</span><span class="special">().</span><span class="identifier">get</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
 </pre>
 <p>
     </p>
@@ -115,10 +115,20 @@
 </span><span class="identifier">t</span><span class="special">.</span><span class="identifier">interrupt_and_wait</span><span class="special">();</span>
 
 <span class="comment">// throws boost::thread_interrupted exception
-</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">result</span><span class="special">().</span><span class="identifier">get</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
 </pre>
+<a name="boost_threadpool.task.waiting_for_multiple_tasks"></a><h4>
+<a name="id371232"></a>
+      <a class="link" href="task.html#boost_threadpool.task.waiting_for_multiple_tasks">Waiting for
+      multiple tasks</a>
+    </h4>
+<p>
+      It is possible to wait for multiple tasks - <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">wait_for_all</span><span class="special">(</span><span class="identifier">tsk1</span><span class="special">,...,</span><span class="identifier">tskn</span><span class="special">)</span></code> blocks
+      until all n tasks are ready and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tp</span><span class="special">::</span><span class="identifier">wait_for_any</span><span class="special">(</span><span class="identifier">tsk1</span><span class="special">,...,</span><span class="identifier">tskn</span><span class="special">)</span></code> blocks
+      until at least one of the tasks becomes ready.
+    </p>
 <a name="boost_threadpool.task.exceptions_in_tasks"></a><h4>
-<a name="id371198"></a>
+<a name="id371340"></a>
       <a class="link" href="task.html#boost_threadpool.task.exceptions_in_tasks">Exceptions in tasks</a>
     </h4>
 <p>
@@ -143,6 +153,7 @@
 <li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">broken_promise</span></code></li>
 <li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">future_already_set</span></code></li>
 <li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">future_cancel</span></code></li>
+<li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">exception</span></code></li>
 <li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">invalid_thread_argument</span></code></li>
 <li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_error</span></code></li>
 <li><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread_exception</span></code></li>
@@ -166,7 +177,7 @@
     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(</span>
       <span class="identifier">throwing_fn</span><span class="special">)</span> <span class="special">)</span> <span class="special">);</span>
 
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">result</span><span class="special">().</span><span class="identifier">get</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// will rethrow an std::runtime_error
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// will rethrow an std::runtime_error
 </span></pre>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/threadpool/libs/tp/doc/html/index.html
==============================================================================
--- sandbox/threadpool/libs/tp/doc/html/index.html	(original)
+++ sandbox/threadpool/libs/tp/doc/html/index.html	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -120,7 +120,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 05, 2009 at 18:12:14 GMT</small></p></td>
+<td align="left"><p><small>Last revised: March 17, 2009 at 19:10:22 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
Modified: sandbox/threadpool/libs/tp/test/Jamfile.v2
==============================================================================
--- sandbox/threadpool/libs/tp/test/Jamfile.v2	(original)
+++ sandbox/threadpool/libs/tp/test/Jamfile.v2	2009-03-17 15:07:47 EDT (Tue, 17 Mar 2009)
@@ -27,7 +27,7 @@
 }
 
 test-suite thread_pool :
-    [ tp-test test_lockfree_queue ]
+#    [ tp-test test_lockfree_queue ]
     [ tp-test test_bounded_queue_fifo ]
     [ tp-test test_bounded_queue_lifo ]
     [ tp-test test_bounded_queue_priority ]