$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r81101 - trunk/libs/thread/example
From: vicente.botet_at_[hidden]
Date: 2012-10-29 15:05:52
Author: viboes
Date: 2012-10-29 15:05:51 EDT (Mon, 29 Oct 2012)
New Revision: 81101
URL: http://svn.boost.org/trac/boost/changeset/81101
Log:
Thread: change strict_lock is_locking by own_lock and update lockable concepts
Text files modified: 
   trunk/libs/thread/example/ba_externallly_locked.cpp |    79 ++++++++++++++++++++------------------- 
   trunk/libs/thread/example/strict_lock.cpp           |     2                                         
   trunk/libs/thread/example/thread_guard.cpp          |     4 ++                                      
   3 files changed, 45 insertions(+), 40 deletions(-)
Modified: trunk/libs/thread/example/ba_externallly_locked.cpp
==============================================================================
--- trunk/libs/thread/example/ba_externallly_locked.cpp	(original)
+++ trunk/libs/thread/example/ba_externallly_locked.cpp	2012-10-29 15:05:51 EDT (Mon, 29 Oct 2012)
@@ -6,6 +6,7 @@
 #define BOOST_THREAD_VERSION 4
 
 #include <boost/thread/mutex.hpp>
+#include <boost/thread/lockable_adapter.hpp>
 #include <boost/thread/externally_locked.hpp>
 #include <boost/thread/strict_lock.hpp>
 #include <boost/thread/lock_types.hpp>
@@ -32,12 +33,12 @@
 };
 
 //[AccountManager
-class AccountManager
+class AccountManager: public basic_lockable_adapter<mutex>
 {
-  mutex mtx_;
 public:
+  typedef basic_lockable_adapter<mutex> lockable_base_type;
   AccountManager() :
-    checkingAcct_(mtx_), savingsAcct_(mtx_)
+    lockable_base_type(), checkingAcct_(*this), savingsAcct_(*this)
   {
   }
   inline void Checking2Savings(int amount);
@@ -48,63 +49,63 @@
   {
     return true;
   } /*->*/
-  externally_locked<BankAccount, mutex > checkingAcct_;
-  externally_locked<BankAccount, mutex > savingsAcct_;
+  externally_locked<BankAccount, AccountManager > checkingAcct_;
+  externally_locked<BankAccount, AccountManager > savingsAcct_;
 };
 //]
 
 //[Checking2Savings
 void AccountManager::Checking2Savings(int amount)
 {
-  strict_lock<mutex> guard(mtx_);
+  strict_lock<AccountManager> guard(*this);
   checkingAcct_.get(guard).Withdraw(amount);
   savingsAcct_.get(guard).Deposit(amount);
 }
 //]
 
-#if MUST_NOT_COMPILE
-//[AMoreComplicatedChecking2Savings_DO_NOT_COMPILE
+//#if DO_NOT_COMPILE
+////[AMoreComplicatedChecking2Savings_DO_NOT_COMPILE
+//void AccountManager::AMoreComplicatedChecking2Savings(int amount) {
+//    unique_lock<AccountManager> guard(*this);
+//    if (some_condition()) {
+//        guard.lock();
+//    }
+//    checkingAcct_.get(guard).Withdraw(amount);
+//    savingsAcct_.get(guard).Deposit(amount);
+//    guard1.unlock();
+//}
+////]
+//#elif DO_NOT_COMPILE_2
+////[AMoreComplicatedChecking2Savings_DO_NOT_COMPILE2
+//void AccountManager::AMoreComplicatedChecking2Savings(int amount) {
+//    unique_lock<AccountManager> guard1(*this);
+//    if (some_condition()) {
+//        guard1.lock();
+//    }
+//    {
+//        strict_lock<AccountManager> guard(guard1);
+//        checkingAcct_.get(guard).Withdraw(amount);
+//        savingsAcct_.get(guard).Deposit(amount);
+//    }
+//    guard1.unlock();
+//}
+////]
+//#else
+////[AMoreComplicatedChecking2Savings
 void AccountManager::AMoreComplicatedChecking2Savings(int amount) {
-    unique_lock<mutex> guard(mtx_);
-    if (some_condition()) {
-        guard.lock();
-    }
-    checkingAcct_.get(guard).Withdraw(amount);
-    savingsAcct_.get(guard).Deposit(amount);
-    guard1.unlock();
-}
-//]
-#elif MUST_NOT_COMPILE_2
-//[AMoreComplicatedChecking2Savings_DO_NOT_COMPILE2
-void AccountManager::AMoreComplicatedChecking2Savings(int amount) {
-    unique_lock<mutex> guard1(mtx_);
+    unique_lock<AccountManager> guard1(*this);
     if (some_condition()) {
         guard1.lock();
     }
     {
-        strict_lock<mutex> guard(guard1);
+        nested_strict_lock<unique_lock<AccountManager> > guard(guard1);
         checkingAcct_.get(guard).Withdraw(amount);
         savingsAcct_.get(guard).Deposit(amount);
     }
     guard1.unlock();
 }
-]
-#else
-//[AMoreComplicatedChecking2Savings
-void AccountManager::AMoreComplicatedChecking2Savings(int amount) {
-    unique_lock<mutex> guard1(mtx_);
-    if (some_condition()) {
-        guard1.lock();
-    }
-    {
-        nested_strict_lock<unique_lock<mutex> > guard(guard1);
-        checkingAcct_.get(guard).Withdraw(amount);
-        savingsAcct_.get(guard).Deposit(amount);
-    }
-    guard1.unlock();
-}
-//]
-#endif
+////]
+//#endif
 
 int main()
 {
Modified: trunk/libs/thread/example/strict_lock.cpp
==============================================================================
--- trunk/libs/thread/example/strict_lock.cpp	(original)
+++ trunk/libs/thread/example/strict_lock.cpp	2012-10-29 15:05:51 EDT (Mon, 29 Oct 2012)
@@ -5,8 +5,8 @@
 
 #define BOOST_THREAD_VERSION 4
 
-#include <boost/thread/lock_traits.hpp>
 #include <boost/thread/mutex.hpp>
+#include <boost/thread/lock_traits.hpp>
 #include <boost/thread/shared_mutex.hpp>
 #include <boost/thread/strict_lock.hpp>
 #include <boost/thread/lock_types.hpp>
Modified: trunk/libs/thread/example/thread_guard.cpp
==============================================================================
--- trunk/libs/thread/example/thread_guard.cpp	(original)
+++ trunk/libs/thread/example/thread_guard.cpp	2012-10-29 15:05:51 EDT (Mon, 29 Oct 2012)
@@ -28,6 +28,10 @@
             do_something(i);
         }
     }
+
+private:
+    func& operator=(func const&);
+
 };
 
 void do_something_in_current_thread()