$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r86001 - in trunk/boost/interprocess/sync: detail spin windows
From: igaztanaga_at_[hidden]
Date: 2013-09-29 07:46:58
Author: igaztanaga
Date: 2013-09-29 07:46:58 EDT (Sun, 29 Sep 2013)
New Revision: 86001
URL: http://svn.boost.org/trac/boost/changeset/86001
Log:
Notify all waiting threads in destructor to allow POSIX semantics on condition variables destruction.
Text files modified: 
   trunk/boost/interprocess/sync/detail/condition_algorithm_8a.hpp |     3 ++-                                     
   trunk/boost/interprocess/sync/spin/condition.hpp                |     4 +++-                                    
   trunk/boost/interprocess/sync/windows/condition.hpp             |     6 +++++-                                  
   trunk/boost/interprocess/sync/windows/named_condition_any.hpp   |     3 +--                                     
   4 files changed, 11 insertions(+), 5 deletions(-)
Modified: trunk/boost/interprocess/sync/detail/condition_algorithm_8a.hpp
==============================================================================
--- trunk/boost/interprocess/sync/detail/condition_algorithm_8a.hpp	Sun Sep 29 07:44:19 2013	(r86000)
+++ trunk/boost/interprocess/sync/detail/condition_algorithm_8a.hpp	2013-09-29 07:46:58 EDT (Sun, 29 Sep 2013)	(r86001)
@@ -324,7 +324,8 @@
 
    condition_8a_wrapper(){}
 
-   ~condition_8a_wrapper(){}
+   //Compiler-generated destructor is OK
+   //~condition_8a_wrapper(){}
 
    ConditionMembers & get_members()
    {  return m_data; }
Modified: trunk/boost/interprocess/sync/spin/condition.hpp
==============================================================================
--- trunk/boost/interprocess/sync/spin/condition.hpp	Sun Sep 29 07:44:19 2013	(r86000)
+++ trunk/boost/interprocess/sync/spin/condition.hpp	2013-09-29 07:46:58 EDT (Sun, 29 Sep 2013)	(r86001)
@@ -112,7 +112,9 @@
 
 inline spin_condition::~spin_condition()
 {
-   //Trivial destructor
+   //Notify all waiting threads
+   //to allow POSIX semantics on condition destruction
+   this->notify_all();
 }
 
 inline void spin_condition::notify_one()
Modified: trunk/boost/interprocess/sync/windows/condition.hpp
==============================================================================
--- trunk/boost/interprocess/sync/windows/condition.hpp	Sun Sep 29 07:44:19 2013	(r86000)
+++ trunk/boost/interprocess/sync/windows/condition.hpp	2013-09-29 07:46:58 EDT (Sun, 29 Sep 2013)	(r86001)
@@ -38,7 +38,11 @@
    {}
 
    ~windows_condition()
-   {}
+   {
+      //Notify all waiting threads
+      //to allow POSIX semantics on condition destruction
+      this->notify_all();
+   }
 
    void notify_one()
    {  m_condition_data.notify_one();   }
Modified: trunk/boost/interprocess/sync/windows/named_condition_any.hpp
==============================================================================
--- trunk/boost/interprocess/sync/windows/named_condition_any.hpp	Sun Sep 29 07:44:19 2013	(r86000)
+++ trunk/boost/interprocess/sync/windows/named_condition_any.hpp	2013-09-29 07:46:58 EDT (Sun, 29 Sep 2013)	(r86001)
@@ -134,8 +134,6 @@
       winapi_mutex_wrapper       m_mtx_unblock_lock;
    };
 
-   ipcdetail::condition_8a_wrapper<condition_data> m_condition_data;
-
    class named_cond_callbacks : public windows_named_sync_interface
    {
       typedef __int64 sem_count_t;
@@ -229,6 +227,7 @@
    };
 
    windows_named_sync   m_named_sync;
+   ipcdetail::condition_8a_wrapper<condition_data> m_condition_data;
    /// @endcond
 };