65 typedef _Mutex mutex_type;
67 unique_lock() noexcept
68 : _M_device(0), _M_owns(
false)
72 explicit unique_lock(mutex_type& __m)
95 template<
typename _Clock,
typename _Duration>
97 unique_lock(mutex_type& __m,
100 _M_owns(_M_device->try_lock_until(__atime))
103 template<
typename _Rep,
typename _Period>
105 unique_lock(mutex_type& __m,
108 _M_owns(_M_device->try_lock_for(__rtime))
117 unique_lock(
const unique_lock&) =
delete;
118 unique_lock& operator=(
const unique_lock&) =
delete;
120 unique_lock(unique_lock&& __u) noexcept
121 : _M_device(__u._M_device), _M_owns(__u._M_owns)
127 unique_lock& operator=(unique_lock&& __u)
noexcept
144 __throw_system_error(
int(errc::operation_not_permitted));
146 __throw_system_error(
int(errc::resource_deadlock_would_occur));
159 __throw_system_error(
int(errc::operation_not_permitted));
161 __throw_system_error(
int(errc::resource_deadlock_would_occur));
164 _M_owns = _M_device->try_lock();
169 template<
typename _Clock,
typename _Duration>
175 __throw_system_error(
int(errc::operation_not_permitted));
177 __throw_system_error(
int(errc::resource_deadlock_would_occur));
180 _M_owns = _M_device->try_lock_until(__atime);
185 template<
typename _Rep,
typename _Period>
191 __throw_system_error(
int(errc::operation_not_permitted));
193 __throw_system_error(
int(errc::resource_deadlock_would_occur));
196 _M_owns = _M_device->try_lock_for(__rtime);
205 __throw_system_error(
int(errc::operation_not_permitted));
214 swap(unique_lock& __u)
noexcept
216 std::swap(_M_device, __u._M_device);
217 std::swap(_M_owns, __u._M_owns);
223 mutex_type* __ret = _M_device;
231 owns_lock()
const noexcept
234 explicit operator bool()
const noexcept
235 {
return owns_lock(); }
239 mutex()
const noexcept
240 {
return _M_device; }
243 mutex_type* _M_device;