• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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