$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r81525 - in trunk: boost/thread libs/thread/doc libs/thread/test libs/thread/test/sync/mutual_exclusion/locks/lock_guard libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons
From: vicente.botet_at_[hidden]
Date: 2012-11-25 03:19:42
Author: viboes
Date: 2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
New Revision: 81525
URL: http://svn.boost.org/trac/boost/changeset/81525
Log:
Thread: update docs and some licenses
Text files modified: 
   trunk/boost/thread/lock_factories.hpp                                                                     |     3 +--                                     
   trunk/libs/thread/doc/compliance.qbk                                                                      |     2 +-                                      
   trunk/libs/thread/doc/mutex_concepts.qbk                                                                  |    36 ++++++++++++++++++++++++++++++++++++    
   trunk/libs/thread/doc/sync_tutorial.qbk                                                                   |    27 ++++++++++++++++++++++++++-             
   trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/make_lock_guard_pass.cpp                    |     2 +-                                      
   trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_adopt_lock_pass.cpp  |    11 +----------                             
   trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_defer_lock_pass.cpp  |    11 +----------                             
   trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_mutex_pass.cpp       |    11 +----------                             
   trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_try_to_lock_pass.cpp |    11 +----------                             
   trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_locks_mutex_pass.cpp      |    11 +----------                             
   trunk/libs/thread/test/test_4882.cpp                                                                      |    31 ++++++++++++++++---------------         
   11 files changed, 86 insertions(+), 70 deletions(-)
Modified: trunk/boost/thread/lock_factories.hpp
==============================================================================
--- trunk/boost/thread/lock_factories.hpp	(original)
+++ trunk/boost/thread/lock_factories.hpp	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -1,8 +1,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
-// (C) Copyright 2007 Anthony Williams
-// (C) Copyright 2011-2012 Vicente J. Botet Escriba
+// (C) Copyright 2012 Vicente J. Botet Escriba
 
 #ifndef BOOST_THREAD_LOCK_FACTORIES_HPP
 #define BOOST_THREAD_LOCK_FACTORIES_HPP
Modified: trunk/libs/thread/doc/compliance.qbk
==============================================================================
--- trunk/libs/thread/doc/compliance.qbk	(original)
+++ trunk/libs/thread/doc/compliance.qbk	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -45,7 +45,7 @@
     [[30.4.1.3]        [Timed mutex types]  [Yes] [-] [-]]
     [[30.4.1.3.1]        [Class timed_mutex]  [Yes] [-] [-]]
     [[30.4.1.3.1]        [Class recursive_timed_mutex]  [Yes] [-] [-]]
-    [[30.4.2]        [Locks]  [Partial] [variadic] [#6227]]
+    [[30.4.2]        [Locks]  [Yes] [-] [-]]
     [[30.4.2.1]        [Class template lock_guard]  [Yes] [-] [-]]
     [[30.4.2.2]        [Class template unique_lock]  [Yes] [-] [-]]
     [[30.4.2.2.1]        [unique_lock constructors, destructor, and assignment] [Yes]  [-]  [-]]
Modified: trunk/libs/thread/doc/mutex_concepts.qbk
==============================================================================
--- trunk/libs/thread/doc/mutex_concepts.qbk	(original)
+++ trunk/libs/thread/doc/mutex_concepts.qbk	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -948,6 +948,10 @@
 
     template<typename Lockable>
     class lock_guard
+    template <typename Lockable>
+    lock_guard<Lockable> make_lock_guard(Lockable& mtx); // EXTENSION
+    template <typename Lockable>
+    lock_guard<Lockable> make_lock_guard(Lockable& mtx, adopt_lock_t); // EXTENSION
   }
 
 [section:lock_guard Class template `lock_guard`]
@@ -1017,6 +1021,38 @@
 
 [endsect]
   
+[section:make_lock_guard Non Member Function `make_lock_guard`]
+
+    template <typename Lockable>
+    lock_guard<Lockable> make_lock_guard(Lockable& m); // EXTENSION
+
+
+[variablelist
+
+[[Returns:] [a lock_guard as if initialized with `{m}`.]]
+
+[[Throws:] [Any exception thrown by the call to [lock_ref_link `m.lock()`].]]
+
+]
+
+
+[endsect]
+[section:make_lock_guard_adopt Non Member Function `make_lock_guard`]
+
+    template <typename Lockable>
+    lock_guard<Lockable> make_lock_guard(Lockable& m, adopt_lock_t); // EXTENSION
+
+
+[variablelist
+
+[[Returns:] [a lock_guard as if initialized with `{m, adopt_lock}`.]]
+
+[[Throws:] [Any exception thrown by the call to [lock_ref_link `m.lock()`].]]
+
+]
+
+
+[endsect]
 [endsect]
 
 [section:lock_concepts Lock Concepts]
Modified: trunk/libs/thread/doc/sync_tutorial.qbk
==============================================================================
--- trunk/libs/thread/doc/sync_tutorial.qbk	(original)
+++ trunk/libs/thread/doc/sync_tutorial.qbk	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -11,4 +11,29 @@
 
 [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2406.html Mutex, Lock, Condition Variable Rationale] adds rationale for the design decisions made for mutexes, locks and condition variables.
 
-[endsect]
+[section:locks Locks]
+
+In addition to the C++11 standard locks, Boost.Thread provides other locks and some utilities that help the user to make their code thread-safe.
+
+In particular, the library provides some lock factories.
+
+  template <class Lockable, class Function>
+  auto with_lock_guard(Lockable& m, Function f) -> decltype(fn())
+  {
+    auto&& _ = boost::make_lock_guard(f);
+    f();
+  }
+
+
+that can be used as
+
+  int i = with_lock_guard(mtx, {}() -> bool 
+  { 
+    // access the protected state 
+    return true;
+  });
+
+
+[endsect] [/ Locks]
+
+[endsect] [/ Tutorial]
Modified: trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/make_lock_guard_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/make_lock_guard_pass.cpp	(original)
+++ trunk/libs/thread/test/sync/mutual_exclusion/locks/lock_guard/make_lock_guard_pass.cpp	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -45,7 +45,7 @@
   time_point t0 = Clock::now();
   time_point t1;
   {
-    auto&& lg = boost::make_lock_guard(m);
+    const auto&& lg = boost::make_lock_guard(m);
     t1 = Clock::now();
     BOOST_THREAD_TRACE;
   }
Modified: trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_adopt_lock_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_adopt_lock_pass.cpp	(original)
+++ trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_adopt_lock_pass.cpp	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -1,13 +1,4 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// Copyright (C) 2011 Vicente J. Botet Escriba
+// Copyright (C) 2012 Vicente J. Botet Escriba
 //
 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_defer_lock_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_defer_lock_pass.cpp	(original)
+++ trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_defer_lock_pass.cpp	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -1,13 +1,4 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// Copyright (C) 2011 Vicente J. Botet Escriba
+// Copyright (C) 2012 Vicente J. Botet Escriba
 //
 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_mutex_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_mutex_pass.cpp	(original)
+++ trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_mutex_pass.cpp	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -1,13 +1,4 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// Copyright (C) 2011 Vicente J. Botet Escriba
+// Copyright (C) 2012 Vicente J. Botet Escriba
 //
 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_try_to_lock_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_try_to_lock_pass.cpp	(original)
+++ trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_try_to_lock_pass.cpp	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -1,13 +1,4 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// Copyright (C) 2011 Vicente J. Botet Escriba
+// Copyright (C) 2012 Vicente J. Botet Escriba
 //
 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_locks_mutex_pass.cpp
==============================================================================
--- trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_locks_mutex_pass.cpp	(original)
+++ trunk/libs/thread/test/sync/mutual_exclusion/locks/unique_lock/cons/make_unique_locks_mutex_pass.cpp	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -1,13 +1,4 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// Copyright (C) 2011 Vicente J. Botet Escriba
+// Copyright (C) 2012 Vicente J. Botet Escriba
 //
 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: trunk/libs/thread/test/test_4882.cpp
==============================================================================
--- trunk/libs/thread/test/test_4882.cpp	(original)
+++ trunk/libs/thread/test/test_4882.cpp	2012-11-25 03:19:40 EST (Sun, 25 Nov 2012)
@@ -4,61 +4,61 @@
 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #define BOOST_THREAD_VERSION 2
+#define BOOST_THREAD_USES_LOG
 
 #include <boost/thread/thread.hpp>
 #include <boost/thread/shared_mutex.hpp>
 #include <boost/detail/no_exceptions_support.hpp>
-
-#include <iostream>
+#include <boost/thread/detail/log.hpp>
 
 boost::shared_mutex mutex;
 
 void thread()
 {
-  std::cout << __FILE__ << ":" << __LINE__ << std::endl;
+  BOOST_THREAD_LOG << "<thrd" << BOOST_THREAD_END_LOG;
   BOOST_TRY
   {
     for (int i =0; i<10; ++i)
     {
-#if 0
+#ifndef BOOST_THREAD_USES_CHRONO
       boost::system_time timeout = boost::get_system_time() + boost::posix_time::milliseconds(50);
 
       if (mutex.timed_lock(timeout))
       {
-        std::cout << __FILE__ << ":" << __LINE__ << " i="<<i << std::endl;
+        BOOST_THREAD_LOG << "<thrd" << " i="<<i << BOOST_THREAD_END_LOG;
         boost::this_thread::sleep(boost::posix_time::milliseconds(10));
         mutex.unlock();
-        std::cout << __FILE__ << ":" << __LINE__ << " i="<<i << std::endl;
+        BOOST_THREAD_LOG << "<thrd" << " i="<<i << BOOST_THREAD_END_LOG;
       }
 #else
       boost::chrono::system_clock::time_point timeout = boost::chrono::system_clock::now() + boost::chrono::milliseconds(50);
 
-      std::cout << __FILE__ << ":" << __LINE__ << " i="<<i << std::endl;
+      BOOST_THREAD_LOG << "<thrd" << " i="<<i << BOOST_THREAD_END_LOG;
       if (mutex.try_lock_until(timeout))
       {
-        std::cout << __FILE__ << ":" << __LINE__ << " i="<<i << std::endl;
+        BOOST_THREAD_LOG << "<thrd" << " i="<<i << BOOST_THREAD_END_LOG;
         boost::this_thread::sleep_for(boost::chrono::milliseconds(10));
         mutex.unlock();
-        std::cout << __FILE__ << ":" << __LINE__ << " i="<<i << std::endl;
+        BOOST_THREAD_LOG << "<thrd" << " i="<<i << BOOST_THREAD_END_LOG;
       }
 #endif
     }
   }
   BOOST_CATCH (boost::lock_error& le)
   {
-    std::cerr << "lock_error exception\n";
+    BOOST_THREAD_LOG << "lock_error exception thrd>" << BOOST_THREAD_END_LOG;
   }
   BOOST_CATCH (...)
   {
-    std::cerr << " exception\n";
+    BOOST_THREAD_LOG << "exception thrd>" << BOOST_THREAD_END_LOG;
   }
   BOOST_CATCH_END
-  std::cout << __FILE__ << ":" << __LINE__ << std::endl;
+  BOOST_THREAD_LOG << "thrd>" << BOOST_THREAD_END_LOG;
 }
 
 int main()
 {
-  std::cout << __FILE__ << ":" << __LINE__ << std::endl;
+  BOOST_THREAD_LOG << "<main" << BOOST_THREAD_END_LOG;
   const int nrThreads = 20;
   boost::thread* threads[nrThreads];
 
@@ -68,9 +68,10 @@
   for (int i = 0; i < nrThreads; ++i)
   {
     threads[i]->join();
-    std::cout << __FILE__ << ":" << __LINE__ << std::endl;
+    BOOST_THREAD_LOG << "main" << BOOST_THREAD_END_LOG;
     delete threads[i];
+    BOOST_THREAD_LOG << "main" << BOOST_THREAD_END_LOG;
   }
-  std::cout << __FILE__ << ":" << __LINE__ << std::endl;
+  BOOST_THREAD_LOG << "main>" << BOOST_THREAD_END_LOG;
   return 0;
 }