30#ifndef _GLIBCXX_UNIQUE_LOCK_H
31#define _GLIBCXX_UNIQUE_LOCK_H 1
33#pragma GCC system_header
35#if __cplusplus < 201103L
43namespace std _GLIBCXX_VISIBILITY(default)
45_GLIBCXX_BEGIN_NAMESPACE_VERSION
56 template<
typename _Mutex>
60 typedef _Mutex mutex_type;
63 : _M_device(0), _M_owns(
false)
87 template<
typename _Clock,
typename _Duration>
91 _M_owns(_M_device->try_lock_until(__atime))
94 template<
typename _Rep,
typename _Period>
98 _M_owns(_M_device->try_lock_for(__rtime))
111 : _M_device(__u._M_device), _M_owns(__u._M_owns)
134 __throw_system_error(
int(errc::operation_not_permitted));
136 __throw_system_error(
int(errc::resource_deadlock_would_occur));
148 __throw_system_error(
int(errc::operation_not_permitted));
150 __throw_system_error(
int(errc::resource_deadlock_would_occur));
153 _M_owns = _M_device->try_lock();
158 template<
typename _Clock,
typename _Duration>
163 __throw_system_error(
int(errc::operation_not_permitted));
165 __throw_system_error(
int(errc::resource_deadlock_would_occur));
168 _M_owns = _M_device->try_lock_until(__atime);
173 template<
typename _Rep,
typename _Period>
178 __throw_system_error(
int(errc::operation_not_permitted));
180 __throw_system_error(
int(errc::resource_deadlock_would_occur));
183 _M_owns = _M_device->try_lock_for(__rtime);
192 __throw_system_error(
int(errc::operation_not_permitted));
210 mutex_type* __ret = _M_device;
217 owns_lock()
const noexcept
220 explicit operator bool()
const noexcept
221 {
return owns_lock(); }
224 mutex()
const noexcept
225 {
return _M_device; }
228 mutex_type* _M_device;
234 template<
typename _Mutex>
239_GLIBCXX_END_NAMESPACE_VERSION
constexpr std::remove_reference< _Tp >::type && move(_Tp &&__t) noexcept
Convert a value to an rvalue.
void swap(any &__x, any &__y) noexcept
Exchange the states of two any objects.
constexpr _Tp * __addressof(_Tp &__r) noexcept
Same as C++11 std::addressof.
ISO C++ entities toplevel namespace is std.
chrono::duration represents a distance between two points in time
chrono::time_point represents a point in time as measured by a clock
Do not acquire ownership of the mutex.
Try to acquire ownership of the mutex without blocking.
Assume the calling thread has already obtained mutex ownership and manage it.
A movable scoped lock type.
void swap(unique_lock< _Mutex > &__x, unique_lock< _Mutex > &__y) noexcept
Swap overload for unique_lock objects.