summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread/qreadwritelock.h
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2023-05-01 15:19:31 -0700
committerThiago Macieira <thiago.macieira@intel.com>2023-05-11 19:56:23 -0700
commit4f00e6c8b9aa1f9ce7223b09b61e041cf6ad034b (patch)
treeb6a56ec3fdd2788302f603e56e8d1671ac5c0ac8 /src/corelib/thread/qreadwritelock.h
parent6ac04064649c69824ceec91bb4161d1475238ea0 (diff)
QReadWriteLock: inline the constructor and destructor
Change-Id: Ieab617d69f3b4b54ab30fffd175b2500dd860431 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/corelib/thread/qreadwritelock.h')
-rw-r--r--src/corelib/thread/qreadwritelock.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/corelib/thread/qreadwritelock.h b/src/corelib/thread/qreadwritelock.h
index 0494088bee..352aaab2cf 100644
--- a/src/corelib/thread/qreadwritelock.h
+++ b/src/corelib/thread/qreadwritelock.h
@@ -18,7 +18,9 @@ class Q_CORE_EXPORT QReadWriteLock
public:
enum RecursionMode { NonRecursive, Recursive };
+ QT_CORE_INLINE_SINCE(6, 6)
explicit QReadWriteLock(RecursionMode recursionMode = NonRecursive);
+ QT_CORE_INLINE_SINCE(6, 6)
~QReadWriteLock();
QT_CORE_INLINE_SINCE(6, 6)
@@ -54,9 +56,22 @@ private:
Q_DISABLE_COPY(QReadWriteLock)
QAtomicPointer<QReadWriteLockPrivate> d_ptr;
friend class QReadWriteLockPrivate;
+ static QReadWriteLockPrivate *initRecursive();
+ static void destroyRecursive(QReadWriteLockPrivate *);
};
#if QT_CORE_INLINE_IMPL_SINCE(6, 6)
+QReadWriteLock::QReadWriteLock(RecursionMode recursionMode)
+ : d_ptr(recursionMode == Recursive ? initRecursive() : nullptr)
+{
+}
+
+QReadWriteLock::~QReadWriteLock()
+{
+ if (auto d = d_ptr.loadAcquire())
+ destroyRecursive(d);
+}
+
void QReadWriteLock::lockForRead()
{
tryLockForRead(QDeadlineTimer(QDeadlineTimer::Forever));