Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r85770 - in trunk/boost/sync: . detail/darwin detail/event detail/generic detail/mutexes detail/posix detail/semaphore detail/windows locks mutexes
From: andrey.semashev_at_[hidden]
Date: 2013-09-18 04:12:59


Author: andysem
Date: 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013)
New Revision: 85770
URL: http://svn.boost.org/trac/boost/changeset/85770

Log:
Moved files to the new directory structure. Removed unnecessary dependencies. Fixed a few bugs.

Added:
   trunk/boost/sync/detail/event/
   trunk/boost/sync/detail/event/event_emulation.hpp
      - copied, changed from r85769, trunk/boost/sync/detail/generic/event_cv_emulation.hpp
   trunk/boost/sync/detail/event/event_windows.hpp
      - copied, changed from r85769, trunk/boost/sync/detail/windows/event.hpp
   trunk/boost/sync/detail/mutexes/
   trunk/boost/sync/detail/mutexes/mutex_posix.hpp
      - copied, changed from r85769, trunk/boost/sync/detail/posix/mutexes/mutex.hpp
   trunk/boost/sync/detail/mutexes/timed_mutex_posix.hpp
      - copied, changed from r85769, trunk/boost/sync/detail/posix/mutexes/timed_mutex.hpp
   trunk/boost/sync/detail/semaphore/
   trunk/boost/sync/detail/semaphore/semaphore_dispatch.hpp
      - copied, changed from r85769, trunk/boost/sync/detail/darwin/semaphore.hpp
   trunk/boost/sync/detail/semaphore/semaphore_emulation.hpp
      - copied, changed from r85769, trunk/boost/sync/detail/generic/semaphore.hpp
   trunk/boost/sync/detail/semaphore/semaphore_posix.hpp
      - copied, changed from r85769, trunk/boost/sync/detail/posix/semaphore.hpp
   trunk/boost/sync/detail/semaphore/semaphore_windows.hpp
      - copied, changed from r85769, trunk/boost/sync/detail/windows/semaphore.hpp
Deleted:
   trunk/boost/sync/detail/darwin/
   trunk/boost/sync/detail/generic/
   trunk/boost/sync/detail/posix/
   trunk/boost/sync/detail/windows/
Text files modified:
   trunk/boost/sync/detail/event/event_emulation.hpp | 100 ++++++++++++++++++---------------------
   trunk/boost/sync/detail/event/event_windows.hpp | 6 +-
   trunk/boost/sync/detail/mutexes/mutex_posix.hpp | 8 +-
   trunk/boost/sync/detail/mutexes/timed_mutex_posix.hpp | 8 +-
   trunk/boost/sync/detail/semaphore/semaphore_dispatch.hpp | 6 +-
   trunk/boost/sync/detail/semaphore/semaphore_emulation.hpp | 50 +++++++++++--------
   trunk/boost/sync/detail/semaphore/semaphore_posix.hpp | 19 +++++--
   trunk/boost/sync/detail/semaphore/semaphore_windows.hpp | 6 +-
   trunk/boost/sync/event.hpp | 4
   trunk/boost/sync/locks/unique_lock.hpp | 9 ++-
   trunk/boost/sync/mutexes/mutex.hpp | 11 +++
   trunk/boost/sync/mutexes/timed_mutex.hpp | 11 +++
   trunk/boost/sync/semaphore.hpp | 14 ++--
   13 files changed, 136 insertions(+), 116 deletions(-)

Copied and modified: trunk/boost/sync/detail/event/event_emulation.hpp (from r85769, trunk/boost/sync/detail/generic/event_cv_emulation.hpp)
==============================================================================
--- trunk/boost/sync/detail/generic/event_cv_emulation.hpp Tue Sep 17 21:32:03 2013 (r85769, copy source)
+++ trunk/boost/sync/detail/event/event_emulation.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -6,13 +6,16 @@
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#ifndef BOOST_SYNC_DETAIL_GENERIC_EVENT_CV_EMULATION_HPP
-#define BOOST_SYNC_DETAIL_GENERIC_EVENT_CV_EMULATION_HPP
+#ifndef BOOST_SYNC_DETAIL_EVENT_EVENT_EMULATION_HPP_INCLUDED_
+#define BOOST_SYNC_DETAIL_EVENT_EVENT_EMULATION_HPP_INCLUDED_
 
 #include <boost/thread/condition_variable.hpp>
 #include <boost/thread/mutex.hpp>
+#include <boost/thread/locks.hpp>
 
 #include <boost/sync/detail/config.hpp>
+//#include <boost/sync/locks/lock_guard.hpp>
+//#include <boost/sync/locks/unique_lock.hpp>
 #include <boost/sync/detail/header.hpp>
 
 #define BOOST_SYNC_EVENT_EMULATED
@@ -27,45 +30,45 @@
     BOOST_DELETED_FUNCTION(event& operator=(event const&));
 
 public:
- explicit event(bool auto_reset = false):
- auto_reset_(auto_reset), set_(false)
- {}
-
- ~event()
- {}
+ explicit event(bool auto_reset = false) :
+ m_auto_reset(auto_reset), m_is_set(false)
+ {
+ }
 
     void post()
     {
- unique_lock<timed_mutex> lock(mutex_);
- set_ = true;
- cv_.notify_all();
+ unique_lock<mutex> lock(m_mutex);
+ m_is_set = true;
+ if (m_auto_reset)
+ m_cond.notify_one();
+ else
+ m_cond.notify_all();
     }
 
     void wait()
     {
- unique_lock<timed_mutex> lock(mutex_);
- if (set_) {
- if (auto_reset_)
- set_ = false;
- return;
- }
+ unique_lock<mutex> lock(m_mutex);
 
- cv_.wait( lock, bind(&event::is_set, this) );
+ while (!m_is_set)
+ m_cond.wait(lock);
 
- if (auto_reset_)
- set_ = false;
+ if (m_auto_reset)
+ m_is_set = false;
     }
 
     void reset()
     {
- unique_lock<timed_mutex> lock(mutex_);
- set_ = false;
+ lock_guard<mutex> lock(m_mutex);
+ m_is_set = false;
     }
 
     bool try_wait()
     {
- unique_lock<timed_mutex> lock(mutex_);
- return test_status();
+ lock_guard<mutex> lock(m_mutex);
+ const bool res = m_is_set;
+ if (res && m_auto_reset)
+ m_is_set = false;
+ return res;
     }
 
     template <class Rep, class Period>
@@ -77,40 +80,29 @@
     template <class Clock, class Duration>
     bool try_wait_until(const chrono::time_point<Clock, Duration> & timeout)
     {
- unique_lock<timed_mutex> lock(mutex_, timeout);
-
- if (!lock.owns_lock())
- return false;
-
- const bool success = cv_.wait_until(lock, timeout, bind(&event::is_set, this));
- if (success)
- return test_status();
- else
- return false;
- }
+ unique_lock<mutex> lock(m_mutex);
 
-private:
- inline bool is_set()
- {
- return set_;
- }
+ while (!m_is_set)
+ {
+ if (m_cond.wait_until(lock, timeout) == cv_status::timeout)
+ {
+ if (!m_is_set)
+ return false;
+ break;
+ }
+ }
 
- bool test_status()
- {
- if (!set_)
- return false;
- else {
- if (auto_reset_)
- set_ = false;
+ if (m_auto_reset)
+ m_is_set = false;
 
- return true;
- }
+ return true;
     }
 
- timed_mutex mutex_;
- condition_variable_any cv_;
- const bool auto_reset_;
- bool set_;
+private:
+ mutex m_mutex;
+ condition_variable m_cond;
+ const bool m_auto_reset;
+ bool m_is_set;
 };
 
 }
@@ -119,4 +111,4 @@
 
 #include <boost/sync/detail/footer.hpp>
 
-#endif // BOOST_SYNC_DETAIL_GENERIC_EVENT_CV_EMULATION_HPP
+#endif // BOOST_SYNC_DETAIL_EVENT_EVENT_EMULATION_HPP_INCLUDED_

Copied and modified: trunk/boost/sync/detail/event/event_windows.hpp (from r85769, trunk/boost/sync/detail/windows/event.hpp)
==============================================================================
--- trunk/boost/sync/detail/windows/event.hpp Tue Sep 17 21:32:03 2013 (r85769, copy source)
+++ trunk/boost/sync/detail/event/event_windows.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -6,8 +6,8 @@
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#ifndef BOOST_SYNC_EVENT_DETAIL_WINDOWS_EVENT_HPP
-#define BOOST_SYNC_EVENT_DETAIL_WINDOWS_EVENT_HPP
+#ifndef BOOST_SYNC_DETAIL_EVENT_EVENT_WINDOWS_HPP_INCLUDED_
+#define BOOST_SYNC_DETAIL_EVENT_EVENT_WINDOWS_HPP_INCLUDED_
 
 #include <cstddef>
 #include <boost/assert.hpp>
@@ -144,4 +144,4 @@
 
 #include <boost/sync/detail/footer.hpp>
 
-#endif // BOOST_SYNC_EVENT_DETAIL_WINDOWS_EVENT_HPP
+#endif // BOOST_SYNC_DETAIL_EVENT_EVENT_WINDOWS_HPP_INCLUDED_

Copied and modified: trunk/boost/sync/detail/mutexes/mutex_posix.hpp (from r85769, trunk/boost/sync/detail/posix/mutexes/mutex.hpp)
==============================================================================
--- trunk/boost/sync/detail/posix/mutexes/mutex.hpp Tue Sep 17 21:32:03 2013 (r85769, copy source)
+++ trunk/boost/sync/detail/mutexes/mutex_posix.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -8,14 +8,14 @@
  * (C) Copyright 2013 Andrey Semashev
  */
 /*!
- * \file detail/pthread/mutexes/mutex.hpp
+ * \file detail/mutexes/mutex_posix.hpp
  *
  * \brief This header is the Boost.Sync library implementation, see the library documentation
  * at http://www.boost.org/doc/libs/release/libs/sync/doc/html/index.html.
  */
 
-#ifndef BOOST_SYNC_DETAIL_POSIX_MUTEXES_MUTEX_HPP_INCLUDED_
-#define BOOST_SYNC_DETAIL_POSIX_MUTEXES_MUTEX_HPP_INCLUDED_
+#ifndef BOOST_SYNC_DETAIL_MUTEXES_MUTEX_POSIX_HPP_INCLUDED_
+#define BOOST_SYNC_DETAIL_MUTEXES_MUTEX_POSIX_HPP_INCLUDED_
 
 #include <cstddef>
 #include <boost/assert.hpp>
@@ -118,4 +118,4 @@
 
 #include <boost/sync/detail/footer.hpp>
 
-#endif // BOOST_SYNC_DETAIL_POSIX_MUTEXES_MUTEX_HPP_INCLUDED_
+#endif // BOOST_SYNC_DETAIL_MUTEXES_MUTEX_POSIX_HPP_INCLUDED_

Copied and modified: trunk/boost/sync/detail/mutexes/timed_mutex_posix.hpp (from r85769, trunk/boost/sync/detail/posix/mutexes/timed_mutex.hpp)
==============================================================================
--- trunk/boost/sync/detail/posix/mutexes/timed_mutex.hpp Tue Sep 17 21:32:03 2013 (r85769, copy source)
+++ trunk/boost/sync/detail/mutexes/timed_mutex_posix.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -8,14 +8,14 @@
  * (C) Copyright 2013 Andrey Semashev
  */
 /*!
- * \file detail/pthread/mutexes/timed_mutex.hpp
+ * \file detail/mutexes/timed_mutex_posix.hpp
  *
  * \brief This header is the Boost.Sync library implementation, see the library documentation
  * at http://www.boost.org/doc/libs/release/libs/sync/doc/html/index.html.
  */
 
-#ifndef BOOST_SYNC_DETAIL_POSIX_MUTEXES_TIMED_MUTEX_HPP_INCLUDED_
-#define BOOST_SYNC_DETAIL_POSIX_MUTEXES_TIMED_MUTEX_HPP_INCLUDED_
+#ifndef BOOST_SYNC_DETAIL_MUTEXES_TIMED_MUTEX_POSIX_HPP_INCLUDED_
+#define BOOST_SYNC_DETAIL_MUTEXES_TIMED_MUTEX_POSIX_HPP_INCLUDED_
 
 #include <time.h>
 #include <cstddef>
@@ -253,4 +253,4 @@
 
 #include <boost/sync/detail/footer.hpp>
 
-#endif // BOOST_SYNC_DETAIL_POSIX_MUTEXES_TIMED_MUTEX_HPP_INCLUDED_
+#endif // BOOST_SYNC_DETAIL_MUTEXES_TIMED_MUTEX_POSIX_HPP_INCLUDED_

Copied and modified: trunk/boost/sync/detail/semaphore/semaphore_dispatch.hpp (from r85769, trunk/boost/sync/detail/darwin/semaphore.hpp)
==============================================================================
--- trunk/boost/sync/detail/darwin/semaphore.hpp Tue Sep 17 21:32:03 2013 (r85769, copy source)
+++ trunk/boost/sync/detail/semaphore/semaphore_dispatch.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -6,8 +6,8 @@
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#ifndef BOOST_SYNC_DETAIL_DARWIN_SEMAPHORE_HPP_INCLUDED_
-#define BOOST_SYNC_DETAIL_DARWIN_SEMAPHORE_HPP_INCLUDED_
+#ifndef BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_DISPATCH_HPP_INCLUDED_
+#define BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_DISPATCH_HPP_INCLUDED_
 
 #include <cstddef>
 #include <dispatch/dispatch.h>
@@ -120,4 +120,4 @@
 
 #include <boost/sync/detail/footer.hpp>
 
-#endif // BOOST_SYNC_DETAIL_DARWIN_SEMAPHORE_HPP_INCLUDED_
+#endif // BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_DISPATCH_HPP_INCLUDED_

Copied and modified: trunk/boost/sync/detail/semaphore/semaphore_emulation.hpp (from r85769, trunk/boost/sync/detail/generic/semaphore.hpp)
==============================================================================
--- trunk/boost/sync/detail/generic/semaphore.hpp Tue Sep 17 21:32:03 2013 (r85769, copy source)
+++ trunk/boost/sync/detail/semaphore/semaphore_emulation.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -6,15 +6,16 @@
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#ifndef BOOST_SYNC_DETAIL_GENERIC_SEMAPHORE_HPP_INCLUDED_
-#define BOOST_SYNC_DETAIL_GENERIC_SEMAPHORE_HPP_INCLUDED_
-
-#include <boost/bind.hpp>
+#ifndef BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_EMULATION_HPP_INCLUDED_
+#define BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_EMULATION_HPP_INCLUDED_
 
+#include <boost/thread/locks.hpp>
 #include <boost/thread/mutex.hpp>
 #include <boost/thread/condition_variable.hpp>
 
 #include <boost/sync/detail/config.hpp>
+//#include <boost/sync/locks/lock_guard.hpp>
+//#include <boost/sync/locks/unique_lock.hpp>
 
 #ifdef BOOST_SYNC_USES_CHRONO
 #include <boost/chrono/system_clocks.hpp>
@@ -48,23 +49,24 @@
 
     void post(void)
     {
- mutex::scoped_lock lock(m_mutex);
+ lock_guard< mutex > lock(m_mutex);
         ++m_count;
         m_cond.notify_one();
     }
 
     void wait(void)
     {
- mutex::scoped_lock lock(m_mutex);
- m_cond.wait(lock, boost::bind(&semaphore::check_wakeup_condition, this));
+ unique_lock< mutex > lock(m_mutex);
+ while (m_count == 0)
+ m_cond.wait(lock);
 
         --m_count;
     }
 
     bool try_wait(void)
     {
- mutex::scoped_lock lock(m_mutex);
- if (!check_wakeup_condition())
+ lock_guard< mutex > lock(m_mutex);
+ if (m_count == 0)
             return false;
 
         --m_count;
@@ -75,27 +77,31 @@
     template <class Rep, class Period>
     bool try_wait_for(const chrono::duration<Rep, Period> & rel_time)
     {
- mutex::scoped_lock lock(m_mutex);
- return m_cond.wait_for(lock, rel_time, boost::bind(&semaphore::check_wakeup_condition, this));
+ return try_wait_until(chrono::steady_clock::now() + rel_time);
     }
 
     template <class Clock, class Duration>
- bool try_wait_until(const chrono::time_point<Clock, Duration> & timeout )
+ bool try_wait_until(const chrono::time_point<Clock, Duration> & timeout)
     {
- mutex::scoped_lock lock(m_mutex);
- return m_cond.wait_until(lock, timeout, boost::bind(&semaphore::check_wakeup_condition, this));
+ unique_lock< mutex > lock(m_mutex);
+ while (m_count == 0)
+ {
+ if (m_cond.wait_until(lock, timeout) == cv_status::timeout)
+ {
+ if (m_count == 0)
+ return false;
+ break;
+ }
+ }
+ --m_count;
+ return true;
     }
 #endif // BOOST_SYNC_USES_CHRONO
 
 private:
- bool check_wakeup_condition()
- {
- return m_count > 0;
- }
-
+ mutex m_mutex;
+ condition_variable m_cond;
     unsigned int m_count;
- boost::mutex m_mutex;
- boost::condition_variable m_cond;
 };
 
 } // namespace
@@ -106,4 +112,4 @@
 
 #include <boost/sync/detail/footer.hpp>
 
-#endif // BOOST_SYNC_DETAIL_GENERIC_SEMAPHORE_HPP_INCLUDED_
+#endif // BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_EMULATION_HPP_INCLUDED_

Copied and modified: trunk/boost/sync/detail/semaphore/semaphore_posix.hpp (from r85769, trunk/boost/sync/detail/posix/semaphore.hpp)
==============================================================================
--- trunk/boost/sync/detail/posix/semaphore.hpp Tue Sep 17 21:32:03 2013 (r85769, copy source)
+++ trunk/boost/sync/detail/semaphore/semaphore_posix.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -7,9 +7,10 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 
 
-#ifndef BOOST_SYNC_DETAIL_POSIX_SEMAPHORE_HPP_INCLUDED_
-#define BOOST_SYNC_DETAIL_POSIX_SEMAPHORE_HPP_INCLUDED_
+#ifndef BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_POSIX_HPP_INCLUDED_
+#define BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_POSIX_HPP_INCLUDED_
 
+#include <errno.h>
 #include <semaphore.h>
 
 #include <boost/assert.hpp>
@@ -44,7 +45,10 @@
     {
         const int status = sem_init(&m_sem, 0, i);
         if (status)
- BOOST_THROW_EXCEPTION(resource_error(status, "boost::sync::semaphore constructor failed in sem_init"));
+ {
+ const int err = errno;
+ BOOST_THROW_EXCEPTION(resource_error(err, "boost::sync::semaphore constructor failed in sem_init"));
+ }
     }
 
     ~semaphore()
@@ -55,11 +59,14 @@
     void post()
     {
         const int status = sem_post(&m_sem);
+ if (status == 0)
+ return;
 
- switch (status)
+ const int err = errno;
+ switch (err)
         {
         case EOVERFLOW:
- BOOST_THROW_EXCEPTION(resource_error(status, "boost::sync::semaphore post failed: Maximum allowable value would be exceeded"));
+ BOOST_THROW_EXCEPTION(resource_error(err, "boost::sync::semaphore post failed: maximum allowable value would be exceeded"));
             break;
 
         case EINVAL:
@@ -182,4 +189,4 @@
 
 #include <boost/sync/detail/footer.hpp>
 
-#endif // BOOST_SYNC_DETAIL_POSIX_SEMAPHORE_HPP_INCLUDED_
+#endif // BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_POSIX_HPP_INCLUDED_

Copied and modified: trunk/boost/sync/detail/semaphore/semaphore_windows.hpp (from r85769, trunk/boost/sync/detail/windows/semaphore.hpp)
==============================================================================
--- trunk/boost/sync/detail/windows/semaphore.hpp Tue Sep 17 21:32:03 2013 (r85769, copy source)
+++ trunk/boost/sync/detail/semaphore/semaphore_windows.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -6,8 +6,8 @@
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#ifndef BOOST_SYNC_DETAIL_WINDOWS_SEMAPHORE_HPP_INCLUDED_
-#define BOOST_SYNC_DETAIL_WINDOWS_SEMAPHORE_HPP_INCLUDED_
+#ifndef BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_WINDOWS_HPP_INCLUDED_
+#define BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_WINDOWS_HPP_INCLUDED_
 
 #include <cstddef>
 #include <limits>
@@ -142,4 +142,4 @@
 
 #include <boost/sync/detail/footer.hpp>
 
-#endif // BOOST_SYNC_DETAIL_WINDOWS_SEMAPHORE_HPP_INCLUDED_
+#endif // BOOST_SYNC_DETAIL_SEMAPHORE_SEMAPHORE_WINDOWS_HPP_INCLUDED_

Modified: trunk/boost/sync/event.hpp
==============================================================================
--- trunk/boost/sync/event.hpp Tue Sep 17 21:32:03 2013 (r85769)
+++ trunk/boost/sync/event.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -98,7 +98,7 @@
 #endif
 
 #if defined(BOOST_SYNC_DETAIL_PLATFORM_WINAPI)
-#include <boost/sync/detail/windows/event.hpp>
+#include <boost/sync/detail/event_windows.hpp>
 
 //#elif defined(BOOST_SYNC_POSIX_SEMAPHORES)
 //#include <boost/sync/semaphore/semaphore_posix.hpp>
@@ -108,7 +108,7 @@
 
 #else
 
-#include <boost/sync/detail/generic/event_cv_emulation.hpp>
+#include <boost/sync/detail/event/event_emulation.hpp>
 
 #endif
 

Modified: trunk/boost/sync/locks/unique_lock.hpp
==============================================================================
--- trunk/boost/sync/locks/unique_lock.hpp Tue Sep 17 21:32:03 2013 (r85769)
+++ trunk/boost/sync/locks/unique_lock.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -61,6 +61,7 @@
 public:
     BOOST_MOVABLE_BUT_NOT_COPYABLE(unique_lock)
 
+public:
     unique_lock() BOOST_NOEXCEPT :
         m_mutex(NULL), m_is_locked(false)
     {
@@ -99,8 +100,8 @@
         that.m_is_locked = false;
     }
 
- explicit unique_lock(BOOST_RV_REF(upgrade_lock< mutex_type >) that)
- m_mutex(that.m_mutex), is_locked(that.m_is_locked)
+ explicit unique_lock(BOOST_RV_REF(upgrade_lock< mutex_type >) that) :
+ m_mutex(that.m_mutex), m_is_locked(that.m_is_locked)
     {
         if (m_is_locked)
         {
@@ -227,7 +228,7 @@
             BOOST_THROW_EXCEPTION(lock_error(detail::system_namespace::errc::resource_deadlock_would_occur, "boost unique_lock already owns the mutex"));
         }
 
- m_is_locked = m->timed_lock(time);
+ m_is_locked = m_mutex->timed_lock(time);
 
         return m_is_locked;
     }
@@ -250,7 +251,7 @@
     }
 
     template< typename TimePoint >
- typename detail::enable_if_tag< Duration, detail::time_point_tag, bool >::type try_lock_until(TimePoint const& abs_time)
+ typename detail::enable_if_tag< TimePoint, detail::time_point_tag, bool >::type try_lock_until(TimePoint const& abs_time)
     {
         if (!m_mutex)
         {

Modified: trunk/boost/sync/mutexes/mutex.hpp
==============================================================================
--- trunk/boost/sync/mutexes/mutex.hpp Tue Sep 17 21:32:03 2013 (r85769)
+++ trunk/boost/sync/mutexes/mutex.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -24,6 +24,13 @@
 {
 public:
     /*!
+ * \brief A platform-specific type of the low level mutex implementation.
+ * \note This type is only available if \c BOOST_SYNC_DEFINES_MUTEX_NATIVE_HANDLE macro is defined by the library.
+ */
+ typedef unspecified native_handle_type;
+
+public:
+ /*!
      * \brief Default constructor
      *
      * Creates a mutual exclusion primitive in the unlocked state.
@@ -92,9 +99,9 @@
 #endif
 
 #if defined(BOOST_SYNC_DETAIL_PLATFORM_PTHREAD)
-#include <boost/sync/detail/posix/mutexes/mutex.hpp>
+#include <boost/sync/detail/mutexes/mutex_posix.hpp>
 #elif defined(BOOST_SYNC_DETAIL_PLATFORM_WINAPI)
-#include <boost/sync/detail/windows/mutexes/mutex.hpp>
+#include <boost/sync/detail/mutexes/mutex_windows.hpp>
 #else
 #error Boost.Sync: Unsupported threading API
 #endif

Modified: trunk/boost/sync/mutexes/timed_mutex.hpp
==============================================================================
--- trunk/boost/sync/mutexes/timed_mutex.hpp Tue Sep 17 21:32:03 2013 (r85769)
+++ trunk/boost/sync/mutexes/timed_mutex.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -24,6 +24,13 @@
 {
 public:
     /*!
+ * \brief A platform-specific type of the low level mutex implementation.
+ * \note This type is only available if \c BOOST_SYNC_DEFINES_TIMED_MUTEX_NATIVE_HANDLE macro is defined by the library.
+ */
+ typedef unspecified native_handle_type;
+
+public:
+ /*!
      * \brief Default constructor
      *
      * Creates a mutual exclusion primitive in the unlocked state.
@@ -106,9 +113,9 @@
 #endif
 
 #if defined(BOOST_SYNC_DETAIL_PLATFORM_PTHREAD)
-#include <boost/sync/detail/posix/mutexes/timed_mutex.hpp>
+#include <boost/sync/detail/mutexes/timed_mutex_posix.hpp>
 #elif defined(BOOST_SYNC_DETAIL_PLATFORM_WINAPI)
-#include <boost/sync/detail/windows/mutexes/timed_mutex.hpp>
+#include <boost/sync/detail/mutexes/timed_mutex_windows.hpp>
 #else
 #error Boost.Sync: Unsupported threading API
 #endif

Modified: trunk/boost/sync/semaphore.hpp
==============================================================================
--- trunk/boost/sync/semaphore.hpp Tue Sep 17 21:32:03 2013 (r85769)
+++ trunk/boost/sync/semaphore.hpp 2013-09-18 04:12:59 EDT (Wed, 18 Sep 2013) (r85770)
@@ -94,7 +94,7 @@
 
 #endif // BOOST_HAS_UNISTD_H
 
-#if !defined(BOOST_SYNC_DETAIL_USE_POSIX_SEMAPHORES) && (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__))
+#if defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
 #include <Availability.h>
 
 // OSX
@@ -120,16 +120,16 @@
 
 
 #if defined(BOOST_SYNC_DETAIL_PLATFORM_WINAPI)
-#include <boost/sync/detail/windows/semaphore.hpp>
-
-#elif defined(BOOST_SYNC_DETAIL_USE_POSIX_SEMAPHORES)
-#include <boost/sync/detail/posix/semaphore.hpp>
+#include <boost/sync/detail/semaphore/semaphore_windows.hpp>
 
 #elif defined(BOOST_SYNC_DETAIL_USE_DISPATCH_SEMAPHORES)
-#include <boost/sync/detail/darwin/semaphore.hpp>
+#include <boost/sync/detail/semaphore/semaphore_dispatch.hpp>
+
+#elif defined(BOOST_SYNC_DETAIL_USE_POSIX_SEMAPHORES)
+#include <boost/sync/detail/semaphore/semaphore_posix.hpp>
 
 #else
-#include <boost/sync/detail/generic/semaphore.hpp>
+#include <boost/sync/detail/semaphore/semaphore_emulation.hpp>
 
 #endif
 


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