1 #ifndef BOOST_RECURSIVE_MUTEX_WIN32_HPP 2 #define BOOST_RECURSIVE_MUTEX_WIN32_HPP 3 4 // recursive_mutex.hpp 5 // 6 // (C) Copyright 2006-7 Anthony Williams 7 // 8 // Distributed under the Boost Software License, Version 1.0. (See 9 // accompanying file LICENSE_1_0.txt or copy at 10 // http://www.boost.org/LICENSE_1_0.txt) 11 12 13 #include <boost/thread/win32/basic_recursive_mutex.hpp> 14 #include <boost/thread/exceptions.hpp> 15 #include <boost/thread/detail/delete.hpp> 16 #if defined BOOST_THREAD_PROVIDES_NESTED_LOCKS 17 #include <boost/thread/lock_types.hpp> 18 #endif 19 20 #include <boost/config/abi_prefix.hpp> 21 22 namespace boost 23 { 24 class recursive_mutex: 25 public ::boost::detail::basic_recursive_mutex 26 { 27 public: 28 BOOST_THREAD_NO_COPYABLE(recursive_mutex) recursive_mutex()29 recursive_mutex() 30 { 31 ::boost::detail::basic_recursive_mutex::initialize(); 32 } ~recursive_mutex()33 ~recursive_mutex() 34 { 35 ::boost::detail::basic_recursive_mutex::destroy(); 36 } 37 38 #if defined BOOST_THREAD_PROVIDES_NESTED_LOCKS 39 typedef unique_lock<recursive_mutex> scoped_lock; 40 typedef detail::try_lock_wrapper<recursive_mutex> scoped_try_lock; 41 #endif 42 }; 43 44 typedef recursive_mutex recursive_try_mutex; 45 46 class recursive_timed_mutex: 47 public ::boost::detail::basic_recursive_timed_mutex 48 { 49 public: 50 BOOST_THREAD_NO_COPYABLE(recursive_timed_mutex) recursive_timed_mutex()51 recursive_timed_mutex() 52 { 53 ::boost::detail::basic_recursive_timed_mutex::initialize(); 54 } ~recursive_timed_mutex()55 ~recursive_timed_mutex() 56 { 57 ::boost::detail::basic_recursive_timed_mutex::destroy(); 58 } 59 60 #if defined BOOST_THREAD_PROVIDES_NESTED_LOCKS 61 typedef unique_lock<recursive_timed_mutex> scoped_timed_lock; 62 typedef detail::try_lock_wrapper<recursive_timed_mutex> scoped_try_lock; 63 typedef scoped_timed_lock scoped_lock; 64 #endif 65 }; 66 } 67 68 #include <boost/config/abi_suffix.hpp> 69 70 #endif 71