63 typedef _Mutex mutex_type;
66 : _M_device(0), _M_owns(
false)
93 template<
typename _Clock,
typename _Duration>
98 _M_owns(_M_device->try_lock_until(__atime))
101 template<
typename _Rep,
typename _Period>
106 _M_owns(_M_device->try_lock_for(__rtime))
119 : _M_device(__u._M_device), _M_owns(__u._M_owns)
142 __throw_system_error(
int(errc::operation_not_permitted));
144 __throw_system_error(
int(errc::resource_deadlock_would_occur));
157 __throw_system_error(
int(errc::operation_not_permitted));
159 __throw_system_error(
int(errc::resource_deadlock_would_occur));
162 _M_owns = _M_device->try_lock();
167 template<
typename _Clock,
typename _Duration>
173 __throw_system_error(
int(errc::operation_not_permitted));
175 __throw_system_error(
int(errc::resource_deadlock_would_occur));
178 _M_owns = _M_device->try_lock_until(__atime);
183 template<
typename _Rep,
typename _Period>
189 __throw_system_error(
int(errc::operation_not_permitted));
191 __throw_system_error(
int(errc::resource_deadlock_would_occur));
194 _M_owns = _M_device->try_lock_for(__rtime);
203 __throw_system_error(
int(errc::operation_not_permitted));
214 std::swap(_M_device, __u._M_device);
215 std::swap(_M_owns, __u._M_owns);
221 mutex_type* __ret = _M_device;
229 owns_lock()
const noexcept
232 explicit operator bool()
const noexcept
233 {
return owns_lock(); }
237 mutex()
const noexcept
238 {
return _M_device; }
241 mutex_type* _M_device;