17template<concepts::Lock Lock>
31 if (m_owned && m_mutex) {
37 if (m_owned && m_mutex) {
55 m_owned = m_mutex->try_lock();
77 constexpr auto mutex() const -> Lock* {
return m_mutex; }
79 constexpr auto owns_lock() const ->
bool {
return bool(m_mutex) && m_owned; }
80 constexpr explicit operator bool()
const {
return owns_lock(); }
83 Lock* m_mutex {
nullptr };
84 bool m_owned {
false };
#define DI_ASSERT(...)
Definition assert_bool.h:7
Definition unique_lock.h:18
constexpr UniqueLock(Lock &mutex, TryToLock)
Definition unique_lock.h:27
constexpr UniqueLock(Lock &mutex, AdoptLock)
Definition unique_lock.h:28
constexpr auto release() -> Lock *
Definition unique_lock.h:71
constexpr void lock()
Definition unique_lock.h:45
constexpr UniqueLock(Lock &mutex)
Definition unique_lock.h:24
constexpr ~UniqueLock()
Definition unique_lock.h:30
constexpr UniqueLock(UniqueLock &&other)
Definition unique_lock.h:21
constexpr auto operator=(UniqueLock &&other) -> UniqueLock &
Definition unique_lock.h:36
constexpr void unlock()
Definition unique_lock.h:59
constexpr void swap(UniqueLock &other)
Definition unique_lock.h:66
constexpr auto try_lock() -> bool
Definition unique_lock.h:52
constexpr UniqueLock(Lock &mutex, DeferLock)
Definition unique_lock.h:26
constexpr auto owns_lock() const -> bool
Definition unique_lock.h:79
constexpr auto mutex() const -> Lock *
Definition unique_lock.h:77
constexpr auto try_to_lock
Definition unique_lock.h:14
constexpr auto defer_lock
Definition unique_lock.h:13
constexpr auto adopt_lock
Definition unique_lock.h:15
Definition any_storable.h:9
constexpr auto exchange(T &object, U &&new_value) -> T
Definition exchange.h:8
constexpr struct di::util::SwapFunction swap
Definition unique_lock.h:11
Definition unique_lock.h:9
Definition unique_lock.h:10