]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/thread/doc/lockable_adapter.qbk
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / thread / doc / lockable_adapter.qbk
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