diff options
Diffstat (limited to 'src/corelib/thread/qorderedmutexlocker_p.h')
-rw-r--r-- | src/corelib/thread/qorderedmutexlocker_p.h | 35 |
1 files changed, 4 insertions, 31 deletions
diff --git a/src/corelib/thread/qorderedmutexlocker_p.h b/src/corelib/thread/qorderedmutexlocker_p.h index 730ba61273..fb2e223e01 100644 --- a/src/corelib/thread/qorderedmutexlocker_p.h +++ b/src/corelib/thread/qorderedmutexlocker_p.h @@ -31,6 +31,7 @@ QT_BEGIN_NAMESPACE class QOrderedMutexLocker { public: + Q_NODISCARD_CTOR QOrderedMutexLocker(QBasicMutex *m1, QBasicMutex *m2) : mtx1((m1 == m2) ? m1 : (std::less<QBasicMutex *>()(m1, m2) ? m1 : m2)), mtx2((m1 == m2) ? nullptr : (std::less<QBasicMutex *>()(m1, m2) ? m2 : m1)), @@ -50,6 +51,7 @@ public: QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QOrderedMutexLocker) + Q_NODISCARD_CTOR QOrderedMutexLocker(QOrderedMutexLocker &&other) noexcept : mtx1(std::exchange(other.mtx1, nullptr)) , mtx2(std::exchange(other.mtx2, nullptr)) @@ -116,42 +118,15 @@ private: bool locked; }; -class QBasicMutexLocker -{ -public: - inline explicit QBasicMutexLocker(QBasicMutex *m) QT_MUTEX_LOCK_NOEXCEPT - : m(m), isLocked(true) - { - m->lock(); - } - inline ~QBasicMutexLocker() { if (isLocked) unlock(); } - - inline void unlock() noexcept - { - isLocked = false; - m->unlock(); - } - - inline void relock() QT_MUTEX_LOCK_NOEXCEPT - { - isLocked = true; - m->lock(); - } - -private: - Q_DISABLE_COPY(QBasicMutexLocker) - - QBasicMutex *m; - bool isLocked; -}; - #else class QOrderedMutexLocker { public: Q_DISABLE_COPY(QOrderedMutexLocker) + Q_NODISCARD_CTOR QOrderedMutexLocker(QBasicMutex *, QBasicMutex *) {} + Q_NODISCARD_CTOR QOrderedMutexLocker(QOrderedMutexLocker &&) = default; QOrderedMutexLocker& operator=(QOrderedMutexLocker &&other) = default; ~QOrderedMutexLocker() {} @@ -163,8 +138,6 @@ public: static bool relock(QBasicMutex *, QBasicMutex *) { return false; } }; -using QBasicMutexLocker = QMutexLocker<QBasicMutex>; - #endif |