$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r52582 - in sandbox/task: boost/task boost/task/detail libs/task/src
From: oliver.kowalke_at_[hidden]
Date: 2009-04-24 14:51:52
Author: olli
Date: 2009-04-24 14:51:50 EDT (Fri, 24 Apr 2009)
New Revision: 52582
URL: http://svn.boost.org/trac/boost/changeset/52582
Log:
* using boost::uint32_t from <boost/ctdint.hpp>
Text files modified: 
   sandbox/task/boost/task/detail/atomic.hpp |     7 ++++---                                 
   sandbox/task/boost/task/detail/guard.hpp  |     5 +++--                                   
   sandbox/task/boost/task/detail/worker.hpp |    14 ++++++++++----                          
   sandbox/task/boost/task/detail/wsq.hpp    |     1 +                                       
   sandbox/task/boost/task/launch.hpp        |     8 ++++----                                
   sandbox/task/boost/task/pool.hpp          |     7 ++++---                                 
   sandbox/task/libs/task/src/guard.cpp      |     2 +-                                      
   7 files changed, 27 insertions(+), 17 deletions(-)
Modified: sandbox/task/boost/task/detail/atomic.hpp
==============================================================================
--- sandbox/task/boost/task/detail/atomic.hpp	(original)
+++ sandbox/task/boost/task/detail/atomic.hpp	2009-04-24 14:51:50 EDT (Fri, 24 Apr 2009)
@@ -8,6 +8,7 @@
 #define BOOST_TASK_DETAIL_ATOMIC_H
 
 #include <boost/assert.hpp>
+#include <boost/cstdint.hpp>
 #include <boost/interprocess/detail/atomic.hpp>
 
 namespace boost { namespace task
@@ -15,18 +16,18 @@
 namespace detail
 {
 inline
-void atomic_exchange( volatile unsigned int * object, unsigned int desired)
+void atomic_exchange( volatile uint32_t * object, uint32_t desired)
 { interprocess::detail::atomic_write32( object, desired); }
 
 inline
-unsigned int atomic_fetch_add( volatile unsigned int * object, unsigned int operand)
+unsigned int atomic_fetch_add( volatile uint32_t * object, uint32_t operand)
 {
         BOOST_ASSERT( operand == 1);
         return interprocess::detail::atomic_dec32( object);
 }
 
 inline
-unsigned int atomic_fetch_sub( volatile unsigned int * object, unsigned int operand)
+unsigned int atomic_fetch_sub( volatile uint32_t * object, uint32_t operand)
 {
         BOOST_ASSERT( operand == 1);
         return interprocess::detail::atomic_inc32( object);
Modified: sandbox/task/boost/task/detail/guard.hpp
==============================================================================
--- sandbox/task/boost/task/detail/guard.hpp	(original)
+++ sandbox/task/boost/task/detail/guard.hpp	2009-04-24 14:51:50 EDT (Fri, 24 Apr 2009)
@@ -7,6 +7,7 @@
 #ifndef BOOST_TASK_DETAIL_GUARD_H
 #define BOOST_TASK_DETAIL_GUARD_H
 
+#include <boost/cstdint.hpp>
 #include <boost/utility.hpp>
 
 #include <boost/task/detail/config.hpp>
@@ -20,10 +21,10 @@
 class BOOST_TASK_DECL guard : private noncopyable
 {
 private:
-	unsigned int	&	active_worker_;
+	volatile uint32_t	&	active_worker_;
 
 public:
-	guard( unsigned int & active_worker);
+	guard( volatile uint32_t & active_worker);
 
         ~guard();
 };
Modified: sandbox/task/boost/task/detail/worker.hpp
==============================================================================
--- sandbox/task/boost/task/detail/worker.hpp	(original)
+++ sandbox/task/boost/task/detail/worker.hpp	2009-04-24 14:51:50 EDT (Fri, 24 Apr 2009)
@@ -144,14 +144,20 @@
                         }
                 }
         
-		void next_callable__( callable & ca)
+		void next_local_callable_( callable & ca)
                 {
                         if ( ! try_take( ca) )
                         {
                                 guard grd( get_pool().idle_worker_);
                                 if ( shutdown_() ) return;
-				this_thread::yield();
-				this_thread::sleep( asleep_);
+				++scns_;
+				if ( scns_ >= max_scns_)
+				{
+					this_thread::sleep( asleep_);
+					scns_ = 0;
+				}
+				else
+					this_thread::yield();
                         }
                 }
 
@@ -258,7 +264,7 @@
                         callable ca;
                         while ( ! pred() )
                         {
-				next_callable__( ca);
+				next_local_callable_( ca);
                                 if( ! ca.empty() )
                                 {
                                         execute_( ca);
Modified: sandbox/task/boost/task/detail/wsq.hpp
==============================================================================
--- sandbox/task/boost/task/detail/wsq.hpp	(original)
+++ sandbox/task/boost/task/detail/wsq.hpp	2009-04-24 14:51:50 EDT (Fri, 24 Apr 2009)
@@ -7,6 +7,7 @@
 #ifndef BOOST_TASK_DETAIL_WSQ_H
 #define BOOST_TASK_DETAIL_WSQ_H
 
+#include <boost/cstdint.hpp>
 #include <boost/shared_array.hpp>
 #include <boost/thread/mutex.hpp>
 #include <boost/utility.hpp>
Modified: sandbox/task/boost/task/launch.hpp
==============================================================================
--- sandbox/task/boost/task/launch.hpp	(original)
+++ sandbox/task/boost/task/launch.hpp	2009-04-24 14:51:50 EDT (Fri, 24 Apr 2009)
@@ -15,14 +15,14 @@
 namespace boost { namespace task
 {
 template< typename R >
-handle< R > launch( task< R > t)
+handle< R > launch_in_pool( task< R > t)
 { return get_default_pool().submit( t); }
 
 template<
         typename R,
         typename Attr
 >
-handle< R > launch(
+handle< R > launch_in_pool(
         task< R > t,
         Attr const& attr)
 { return get_default_pool().submit( t, attr); }
@@ -31,7 +31,7 @@
         typename Channel,
         typename R
 >
-handle< R > launch(
+handle< R > launch_in_pool(
         pool< Channel > & pool,
         task< R > t)
 { return pool.submit( t); }
@@ -41,7 +41,7 @@
         typename R,
         typename Attr
 >
-handle< R > launch(
+handle< R > launch_in_pool(
         pool< Channel > & pool,
         task< R > t,
         Attr const& attr)
Modified: sandbox/task/boost/task/pool.hpp
==============================================================================
--- sandbox/task/boost/task/pool.hpp	(original)
+++ sandbox/task/boost/task/pool.hpp	2009-04-24 14:51:50 EDT (Fri, 24 Apr 2009)
@@ -13,6 +13,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/bind.hpp>
+#include <boost/cstdint.hpp>
 #include <boost/function.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 #include <boost/thread.hpp>
@@ -46,10 +47,10 @@
 
         detail::worker_group	wg_;
         shared_mutex			mtx_wg_;
-	unsigned int			state_;
+	volatile uint32_t		state_;
         channel		 			channel_;
-	unsigned int			active_worker_;
-	unsigned int			idle_worker_;
+	volatile uint32_t		active_worker_;
+	volatile uint32_t		idle_worker_;
 
         void worker_entry_()
         {
Modified: sandbox/task/libs/task/src/guard.cpp
==============================================================================
--- sandbox/task/libs/task/src/guard.cpp	(original)
+++ sandbox/task/libs/task/src/guard.cpp	2009-04-24 14:51:50 EDT (Fri, 24 Apr 2009)
@@ -14,7 +14,7 @@
 {
 namespace detail
 {
-guard::guard( unsigned int & active_worker)
+guard::guard( volatile uint32_t & active_worker)
 : active_worker_( active_worker)
 {
         BOOST_ASSERT( active_worker_ >= 0);