1[/ 2 (C) Copyright 2008-2013 Vicente J. Botet Escriba 3 Distributed under the Boost Software License, Version 1.0. 4 (See accompanying file LICENSE_1_0.txt or copy at 5 http://www.boost.org/LICENSE_1_0.txt). 6] 7 8[/==========================================================================================] 9[section:lockable_adapter_hpp Header `<boost/thread/lockable_adapter.hpp>`] 10[/==========================================================================================] 11 12 namespace boost { 13 template <typename Lockable> class basic_lockable_adapter; 14 template <typename Lockable> class lockable_adapter; 15 template <typename TimedLock> class timed_lockable_adapter; 16 template <typename SharableLock> class shared_lockable_adapter; 17 template <typename UpgradableLock> class upgrade_lockable_adapter; 18 } 19 20[section Template Class `basic_lockable_adapter<>`] 21 22 template <typename Lockable> 23 class basic_lockable_adapter { 24 public: 25 basic_lockable_adapter(basic_lockable_adapter const&) = delete 26 basic_lockable_adapter& opearator=(basic_lockable_adapter const&) = delete 27 28 typedef Lockable mutex_type; 29 30 basic_lockable_adapter() {} 31 void lock(); 32 void unlock(); 33 bool try_lock(); 34 }; 35 36[endsect] 37[section Template Class `lockable_adapter<>`] 38 39 template <typename Lockable> 40 class lockable_adapter : : public basic_lockable_adapter<Lockable> { 41 public: 42 lockable_adapter() {} 43 44 bool try_lock(); 45 }; 46 47[endsect] 48 49[section Template Class `timed_lockable_adapter<>`] 50 51 template <typename TimedLock> 52 class timed_lockable_adapter : public lockable_adapter<TimedLock> { 53 public: 54 timed_lockable_adapter() {} 55 56 bool try_lock_until(system_time const & abs_time); 57 template<typename TimeDuration> 58 bool try_lock_for(TimeDuration const & relative_time); 59 60 void lock_until(system_time const & abs_time); 61 template<typename TimeDuration> 62 void lock_for(TimeDuration const & relative_time); 63 }; 64 65[endsect] 66[section Template Class `shared_lockable_adapter<>`] 67 68 template <typename SharableLock> 69 class shared_lockable_adapter : public timed_lockable_adapter<SharableLock> { 70 public: 71 shared_lockable_adapter() {} 72 void lock_shared(); 73 bool try_lock_shared(); 74 void unlock_shared(); 75 76 bool try_lock_shared_until(system_time const& t); 77 template<typename TimeDuration> 78 bool try_lock_shared_for(TimeDuration const& t); 79 80 template<typename TimeDuration> 81 void lock_shared_for(TimeDuration const& t); 82 void lock_shared_until(system_time const& t); 83 }; 84 85 86[endsect] 87[section Template Class `upgrade_lockable_adapter<>`] 88 89 template <typename UpgradableLock> 90 class upgrade_lockable_adapter : public shared_lockable_adapter<UpgradableLock>{ 91 public: 92 upgrade_lockable_adapter(); 93 94 void lock_upgrade(); 95 bool try_lock_upgrade(); 96 void unlock_upgrade(); 97 98 void unlock_upgrade_and_lock(); 99 void unlock_and_lock_upgrade(); 100 void unlock_and_lock_shared(); 101 void unlock_upgrade_and_lock_shared(); 102 103 bool try_lock_upgrade_until(system_time const&t); 104 template<typename TimeDuration> 105 bool try_lock_upgrade_for(TimeDuration const&t); 106 void lock_upgrade_until(system_time const&t); 107 template<typename TimeDuration> 108 void lock_upgrade_for(TimeDuration const&t); 109 }; 110 111 112 113[endsect] 114[endsect] 115 116 117 118