Boost logo

Boost-Commit :

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">&lt;</span> <span class="keyword">typename</span> <span class="identifier">SchedulingPolicy</span> <span class="special">&gt;</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">&lt;</span> <span class="keyword">typename</span> <span class="identifier">SchedulingPolicy</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">Channel</span> <span class="special">&gt;::</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">&lt;</span> <span class="identifier">Channel</span> <span class="special">&gt;::</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">&lt;&lt;</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">&lt;&lt;</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">&lt;</span> <span class="identifier">Channel</span> <span class="special">&gt;::</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">&lt;</span> <span class="identifier">Channel</span> <span class="special">&gt;::</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">&amp;</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">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special">&lt;&lt;</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">&lt;</span> <span class="identifier">pool_type</span> <span class="special">&gt;::</span><span class="identifier">value</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>
 <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">&amp;</span> <span class="identifier">act</span><span class="special">,</span> <span class="identifier">Attr</span> <span class="keyword">const</span><span class="special">&amp;</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">&amp;</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">&lt;</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">&gt;</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">&lt;</span> <span class="identifier">callable</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">unbounded_channel</span><span class="special">&lt;</span> <span class="identifier">fifo</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">get_default_pool</span><span class="special">();</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Act</span> <span class="special">&gt;</span>
+<span class="identifier">task</span><span class="special">&lt;</span> <span class="identifier">R</span> <span class="special">&gt;</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">&amp;</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&lt; pool &gt;::value == false &amp;&amp; ! ( pool.terminating()
- || pool.terminated() )
+ has_priority&lt; pool &gt;::value == false &amp;&amp; ! 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&lt; pool &gt;::value == true &amp;&amp; ! ( pool.terminating()
- || pool.terminated() )
+ has_priority&lt; pool &gt;::value == true &amp;&amp; ! 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&amp; 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">&amp;</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">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Act</span> <span class="special">&gt;</span>
+<span class="identifier">task</span><span class="special">&lt;</span> <span class="identifier">R</span> <span class="special">&gt;</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">&amp;</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&lt; pool &gt;::value == false &amp;&amp; ! 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">&lt;</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">&gt;</span>
 
@@ -795,7 +810,7 @@
   <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Pool</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">R</span> <span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">fut</span><span class="special">,</span>
+ <span class="identifier">future</span><span class="special">&lt;</span> <span class="identifier">R</span> <span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</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">&amp;</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">&amp;</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">&lt;</span> <span class="identifier">R</span> <span class="special">&gt;</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">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Duration</span> <span class="special">&gt;</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">&amp;</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">&amp;</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">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Pool</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">R</span> <span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">fut</span><span class="special">,</span>
+ <span class="identifier">future</span><span class="special">&lt;</span> <span class="identifier">R</span> <span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</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">&amp;</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">&lt;</span> <span class="identifier">R</span> <span class="special">&gt;</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">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Duration</span> <span class="special">&gt;</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">&amp;</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">&amp;</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">&lt;</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">&lt;</span> <span class="identifier">Attr</span> <span class="special">&gt;</span> <span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;&lt;</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">&lt;&lt;</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">&lt;&lt;</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">get</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="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">&lt;&lt;</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">&lt;&lt;</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">&lt;&lt;</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">get</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>
 </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">&lt;&lt;</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">&lt;&lt;</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">&lt;&lt;</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">get</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>
 </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">&lt;&lt;</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">&lt;&lt;</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">&lt;&lt;</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">get</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="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 ]


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