diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2023-05-01 15:19:31 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2023-05-11 19:56:23 -0700 |
commit | 4f00e6c8b9aa1f9ce7223b09b61e041cf6ad034b (patch) | |
tree | b6a56ec3fdd2788302f603e56e8d1671ac5c0ac8 /src/corelib/thread/qreadwritelock.h | |
parent | 6ac04064649c69824ceec91bb4161d1475238ea0 (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.h | 15 |
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)); |