Chris@16
|
1 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
2 //
|
Chris@16
|
3 // (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
|
Chris@16
|
4 // Software License, Version 1.0. (See accompanying file
|
Chris@16
|
5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
6 //
|
Chris@16
|
7 // See http://www.boost.org/libs/thread for documentation.
|
Chris@16
|
8 //
|
Chris@16
|
9 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
10
|
Chris@16
|
11 #ifndef BOOST_THREAD_NULL_MUTEX_HPP
|
Chris@16
|
12 #define BOOST_THREAD_NULL_MUTEX_HPP
|
Chris@16
|
13
|
Chris@16
|
14 #include <boost/thread/detail/config.hpp>
|
Chris@16
|
15 #include <boost/thread/detail/delete.hpp>
|
Chris@16
|
16 #include <boost/chrono/chrono.hpp>
|
Chris@16
|
17
|
Chris@16
|
18 /// \file
|
Chris@16
|
19 /// Describes null_mutex class
|
Chris@16
|
20
|
Chris@16
|
21 namespace boost
|
Chris@16
|
22 {
|
Chris@16
|
23
|
Chris@16
|
24 /// Implements a mutex that simulates a mutex without doing any operation and
|
Chris@16
|
25 /// simulates a successful operation.
|
Chris@16
|
26 class null_mutex
|
Chris@16
|
27 {
|
Chris@16
|
28 public:
|
Chris@16
|
29
|
Chris@16
|
30 BOOST_THREAD_NO_COPYABLE( null_mutex) /*< no copyable >*/
|
Chris@16
|
31
|
Chris@16
|
32 null_mutex() {}
|
Chris@16
|
33
|
Chris@16
|
34 /// Simulates a mutex lock() operation. Empty function.
|
Chris@16
|
35 void lock()
|
Chris@16
|
36 {
|
Chris@16
|
37 }
|
Chris@16
|
38
|
Chris@16
|
39 /// Simulates a mutex try_lock() operation.
|
Chris@16
|
40 /// Equivalent to "return true;"
|
Chris@16
|
41 bool try_lock()
|
Chris@16
|
42 {
|
Chris@16
|
43 return true;
|
Chris@16
|
44 }
|
Chris@16
|
45
|
Chris@16
|
46 /// Simulates a mutex unlock() operation.
|
Chris@16
|
47 /// Empty function.
|
Chris@16
|
48 void unlock()
|
Chris@16
|
49 {
|
Chris@16
|
50 }
|
Chris@16
|
51
|
Chris@16
|
52 #ifdef BOOST_THREAD_USES_CHRONO
|
Chris@16
|
53 /// Simulates a mutex try_lock_until() operation.
|
Chris@16
|
54 /// Equivalent to "return true;"
|
Chris@16
|
55 template <typename Clock, typename Duration>
|
Chris@16
|
56 bool try_lock_until(chrono::time_point<Clock, Duration> const &)
|
Chris@16
|
57 {
|
Chris@16
|
58 return true;
|
Chris@16
|
59 }
|
Chris@16
|
60
|
Chris@16
|
61 /// Simulates a mutex try_lock_for() operation.
|
Chris@16
|
62 /// Equivalent to "return true;"
|
Chris@16
|
63 template <typename Rep, typename Period>
|
Chris@16
|
64 bool try_lock_for(chrono::duration<Rep, Period> const &)
|
Chris@16
|
65 {
|
Chris@16
|
66 return true;
|
Chris@16
|
67 }
|
Chris@16
|
68 #endif
|
Chris@16
|
69
|
Chris@16
|
70 /// Simulates a mutex lock_shared() operation.
|
Chris@16
|
71 /// Empty function.
|
Chris@16
|
72 void lock_shared()
|
Chris@16
|
73 {
|
Chris@16
|
74 }
|
Chris@16
|
75
|
Chris@16
|
76 /// Simulates a mutex try_lock_shared() operation.
|
Chris@16
|
77 /// Equivalent to "return true;"
|
Chris@16
|
78 bool try_lock_shared()
|
Chris@16
|
79 {
|
Chris@16
|
80 return true;
|
Chris@16
|
81 }
|
Chris@16
|
82
|
Chris@16
|
83 /// Simulates a mutex unlock_shared() operation.
|
Chris@16
|
84 /// Empty function.
|
Chris@16
|
85 void unlock_shared()
|
Chris@16
|
86 {
|
Chris@16
|
87 }
|
Chris@16
|
88
|
Chris@16
|
89 /// Simulates a mutex try_lock_shared_until() operation.
|
Chris@16
|
90 /// Equivalent to "return true;"
|
Chris@16
|
91 template <typename Clock, typename Duration>
|
Chris@16
|
92 bool try_lock_shared_until(chrono::time_point<Clock, Duration> const &)
|
Chris@16
|
93 {
|
Chris@16
|
94 return true;
|
Chris@16
|
95 }
|
Chris@16
|
96 /// Simulates a mutex try_lock_shared_for() operation.
|
Chris@16
|
97 /// Equivalent to "return true;"
|
Chris@16
|
98 template <typename Rep, typename Period>
|
Chris@16
|
99 bool try_lock_shared_for(chrono::duration<Rep, Period> const &)
|
Chris@16
|
100 {
|
Chris@16
|
101 return true;
|
Chris@16
|
102 }
|
Chris@16
|
103
|
Chris@16
|
104 /// Simulates a mutex lock_upgrade() operation.
|
Chris@16
|
105 /// Empty function.
|
Chris@16
|
106 void lock_upgrade()
|
Chris@16
|
107 {
|
Chris@16
|
108 }
|
Chris@16
|
109
|
Chris@16
|
110 /// Simulates a mutex try_lock_upgrade() operation.
|
Chris@16
|
111 /// Equivalent to "return true;"
|
Chris@16
|
112 bool try_lock_upgrade()
|
Chris@16
|
113 {
|
Chris@16
|
114 return true;
|
Chris@16
|
115 }
|
Chris@16
|
116
|
Chris@16
|
117 /// Simulates a mutex unlock_upgrade() operation.
|
Chris@16
|
118 /// Empty function.
|
Chris@16
|
119 void unlock_upgrade()
|
Chris@16
|
120 {
|
Chris@16
|
121 }
|
Chris@16
|
122
|
Chris@16
|
123 /// Simulates a mutex try_lock_upgrade_until() operation.
|
Chris@16
|
124 /// Equivalent to "return true;"
|
Chris@16
|
125 template <typename Clock, typename Duration>
|
Chris@16
|
126 bool try_lock_upgrade_until(chrono::time_point<Clock, Duration> const &)
|
Chris@16
|
127 {
|
Chris@16
|
128 return true;
|
Chris@16
|
129 }
|
Chris@16
|
130
|
Chris@16
|
131 /// Simulates a mutex try_lock_upgrade_for() operation.
|
Chris@16
|
132 /// Equivalent to "return true;"
|
Chris@16
|
133 template <typename Rep, typename Period>
|
Chris@16
|
134 bool try_lock_upgrade_for(chrono::duration<Rep, Period> const &)
|
Chris@16
|
135 {
|
Chris@16
|
136 return true;
|
Chris@16
|
137 }
|
Chris@16
|
138
|
Chris@16
|
139 /// Simulates a mutex try_unlock_shared_and_lock() operation.
|
Chris@16
|
140 /// Equivalent to "return true;"
|
Chris@16
|
141 bool try_unlock_shared_and_lock()
|
Chris@16
|
142 {
|
Chris@16
|
143 return true;
|
Chris@16
|
144 }
|
Chris@16
|
145
|
Chris@16
|
146 #ifdef BOOST_THREAD_USES_CHRONO
|
Chris@16
|
147 /// Simulates a mutex try_unlock_shared_and_lock_until() operation.
|
Chris@16
|
148 /// Equivalent to "return true;"
|
Chris@16
|
149 template <typename Clock, typename Duration>
|
Chris@16
|
150 bool try_unlock_shared_and_lock_until(chrono::time_point<Clock, Duration> const &)
|
Chris@16
|
151 {
|
Chris@16
|
152 return true;
|
Chris@16
|
153 }
|
Chris@16
|
154
|
Chris@16
|
155 /// Simulates a mutex try_unlock_shared_and_lock_for() operation.
|
Chris@16
|
156 /// Equivalent to "return true;"
|
Chris@16
|
157 template <typename Rep, typename Period>
|
Chris@16
|
158 bool try_unlock_shared_and_lock_for(chrono::duration<Rep, Period> const &)
|
Chris@16
|
159 {
|
Chris@16
|
160 return true;
|
Chris@16
|
161 }
|
Chris@16
|
162 #endif
|
Chris@16
|
163
|
Chris@16
|
164 /// Simulates unlock_and_lock_shared().
|
Chris@16
|
165 /// Empty function.
|
Chris@16
|
166 void unlock_and_lock_shared()
|
Chris@16
|
167 {
|
Chris@16
|
168 }
|
Chris@16
|
169
|
Chris@16
|
170 /// Simulates a mutex try_unlock_shared_and_lock_upgrade() operation.
|
Chris@16
|
171 /// Equivalent to "return true;"
|
Chris@16
|
172 bool try_unlock_shared_and_lock_upgrade()
|
Chris@16
|
173 {
|
Chris@16
|
174 return true;
|
Chris@16
|
175 }
|
Chris@16
|
176
|
Chris@16
|
177 #ifdef BOOST_THREAD_USES_CHRONO
|
Chris@16
|
178 /// Simulates a mutex try_unlock_shared_and_lock_upgrade_until() operation.
|
Chris@16
|
179 /// Equivalent to "return true;"
|
Chris@16
|
180 template <typename Clock, typename Duration>
|
Chris@16
|
181 bool try_unlock_shared_and_lock_upgrade_until(chrono::time_point<Clock, Duration> const &)
|
Chris@16
|
182 {
|
Chris@16
|
183 return true;
|
Chris@16
|
184 }
|
Chris@16
|
185
|
Chris@16
|
186 /// Simulates a mutex try_unlock_shared_and_lock_upgrade_for() operation.
|
Chris@16
|
187 /// Equivalent to "return true;"
|
Chris@16
|
188 template <typename Rep, typename Period>
|
Chris@16
|
189 bool try_unlock_shared_and_lock_upgrade_for(chrono::duration<Rep, Period> const &)
|
Chris@16
|
190 {
|
Chris@16
|
191 return true;
|
Chris@16
|
192 }
|
Chris@16
|
193 #endif
|
Chris@16
|
194
|
Chris@16
|
195 /// Simulates unlock_and_lock_upgrade().
|
Chris@16
|
196 /// Empty function.
|
Chris@16
|
197 void unlock_and_lock_upgrade()
|
Chris@16
|
198 {
|
Chris@16
|
199 }
|
Chris@16
|
200
|
Chris@16
|
201 /// Simulates unlock_upgrade_and_lock().
|
Chris@16
|
202 /// Empty function.
|
Chris@16
|
203 void unlock_upgrade_and_lock()
|
Chris@16
|
204 {
|
Chris@16
|
205 }
|
Chris@16
|
206
|
Chris@16
|
207 /// Simulates a mutex try_unlock_upgrade_and_lock() operation.
|
Chris@16
|
208 /// Equivalent to "return true;"
|
Chris@16
|
209 bool try_unlock_upgrade_and_lock()
|
Chris@16
|
210 {
|
Chris@16
|
211 return true;
|
Chris@16
|
212 }
|
Chris@16
|
213
|
Chris@16
|
214 #ifdef BOOST_THREAD_USES_CHRONO
|
Chris@16
|
215 /// Simulates a mutex try_unlock_upgrade_and_lock_until() operation.
|
Chris@16
|
216 /// Equivalent to "return true;"
|
Chris@16
|
217 template <typename Clock, typename Duration>
|
Chris@16
|
218 bool try_unlock_upgrade_and_lock_until(chrono::time_point<Clock, Duration> const &)
|
Chris@16
|
219 {
|
Chris@16
|
220 return true;
|
Chris@16
|
221 }
|
Chris@16
|
222
|
Chris@16
|
223 /// Simulates a mutex try_unlock_upgrade_and_lock_for() operation.
|
Chris@16
|
224 /// Equivalent to "return true;"
|
Chris@16
|
225 template <typename Rep, typename Period>
|
Chris@16
|
226 bool try_unlock_upgrade_and_lock_for(chrono::duration<Rep, Period> const &)
|
Chris@16
|
227 {
|
Chris@16
|
228 return true;
|
Chris@16
|
229 }
|
Chris@16
|
230 #endif
|
Chris@16
|
231
|
Chris@16
|
232 /// Simulates unlock_upgrade_and_lock_shared().
|
Chris@16
|
233 /// Empty function.
|
Chris@16
|
234 void unlock_upgrade_and_lock_shared()
|
Chris@16
|
235 {
|
Chris@16
|
236 }
|
Chris@16
|
237
|
Chris@16
|
238 };
|
Chris@16
|
239
|
Chris@16
|
240 } //namespace boost {
|
Chris@16
|
241
|
Chris@16
|
242
|
Chris@16
|
243 #endif
|