]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 |