![]() |
Qt 6.x
The Qt SDK
|
#include <qreadwritelock_p.h>
Classes | |
struct | Reader |
Public Member Functions | |
QReadWriteLockPrivate (bool isRecursive=false) | |
bool | lockForWrite (std::unique_lock< std::mutex > &lock, QDeadlineTimer timeout) |
bool | lockForRead (std::unique_lock< std::mutex > &lock, QDeadlineTimer timeout) |
void | unlock () |
void | release () |
bool | recursiveLockForWrite (QDeadlineTimer timeout) |
bool | recursiveLockForRead (QDeadlineTimer timeout) |
void | recursiveUnlock () |
Static Public Member Functions | |
static QReadWriteLockPrivate * | allocate () |
static QReadWriteLockStates::StateForWaitCondition | stateForWaitCondition (const QReadWriteLock *lock) |
Public Attributes | |
std::condition_variable | writerCond |
std::condition_variable | readerCond |
std::mutex | mutex |
int | readerCount = 0 |
int | writerCount = 0 |
int | waitingReaders = 0 |
int | waitingWriters = 0 |
const bool | recursive |
int | id = 0 |
Qt::HANDLE | currentWriter = {} |
QVarLengthArray< Reader, 16 > | currentReaders |
Definition at line 42 of file qreadwritelock_p.h.
|
inlineexplicit |
Definition at line 45 of file qreadwritelock_p.h.
|
static |
Definition at line 563 of file qreadwritelock.cpp.
References d, i, and Q_ASSERT.
Referenced by contendedTryLockForRead(), and contendedTryLockForWrite().
bool QReadWriteLockPrivate::lockForRead | ( | std::unique_lock< std::mutex > & | lock, |
QDeadlineTimer | timeout | ||
) |
Definition at line 414 of file qreadwritelock.cpp.
References lock, mutex, Q_ASSERT, readerCond, readerCount, waitingReaders, waitingWriters, and writerCount.
Referenced by recursiveLockForRead().
bool QReadWriteLockPrivate::lockForWrite | ( | std::unique_lock< std::mutex > & | lock, |
QDeadlineTimer | timeout | ||
) |
Definition at line 435 of file qreadwritelock.cpp.
References lock, mutex, Q_ASSERT, readerCond, readerCount, waitingReaders, waitingWriters, writerCond, and writerCount.
Referenced by recursiveLockForWrite().
bool QReadWriteLockPrivate::recursiveLockForRead | ( | QDeadlineTimer | timeout | ) |
Definition at line 478 of file qreadwritelock.cpp.
References currentReaders, QThread::currentThreadId(), handleEquals(), it, lock, lockForRead(), mutex, Q_ASSERT, and recursive.
bool QReadWriteLockPrivate::recursiveLockForWrite | ( | QDeadlineTimer | timeout | ) |
Definition at line 500 of file qreadwritelock.cpp.
References QThread::currentThreadId(), currentWriter, lock, lockForWrite(), mutex, Q_ASSERT, recursive, and writerCount.
void QReadWriteLockPrivate::recursiveUnlock | ( | ) |
Definition at line 518 of file qreadwritelock.cpp.
References currentReaders, QThread::currentThreadId(), currentWriter, handleEquals(), it, lock, mutex, Q_ASSERT, qWarning, readerCount, recursive, unlock(), and writerCount.
void QReadWriteLockPrivate::release | ( | ) |
Definition at line 573 of file qreadwritelock.cpp.
References Q_ASSERT, readerCount, recursive, waitingReaders, waitingWriters, and writerCount.
|
inlinestatic |
Helper for QWaitCondition::wait
Definition at line 90 of file qreadwritelock_p.h.
void QReadWriteLockPrivate::unlock | ( | ) |
Definition at line 464 of file qreadwritelock.cpp.
References mutex, Q_ASSERT, readerCond, waitingReaders, waitingWriters, and writerCond.
Referenced by recursiveUnlock().
QVarLengthArray<Reader, 16> QReadWriteLockPrivate::currentReaders |
Definition at line 76 of file qreadwritelock_p.h.
Referenced by recursiveLockForRead(), and recursiveUnlock().
Qt::HANDLE QReadWriteLockPrivate::currentWriter = {} |
Definition at line 69 of file qreadwritelock_p.h.
Referenced by recursiveLockForWrite(), and recursiveUnlock().
int QReadWriteLockPrivate::id = 0 |
Definition at line 64 of file qreadwritelock_p.h.
std::mutex QReadWriteLockPrivate::mutex |
Definition at line 51 of file qreadwritelock_p.h.
Referenced by lockForRead(), lockForWrite(), recursiveLockForRead(), recursiveLockForWrite(), recursiveUnlock(), and unlock().
std::condition_variable QReadWriteLockPrivate::readerCond |
Definition at line 49 of file qreadwritelock_p.h.
Referenced by lockForRead(), lockForWrite(), and unlock().
int QReadWriteLockPrivate::readerCount = 0 |
Definition at line 52 of file qreadwritelock_p.h.
Referenced by lockForRead(), lockForWrite(), recursiveUnlock(), and release().
const bool QReadWriteLockPrivate::recursive |
Definition at line 56 of file qreadwritelock_p.h.
Referenced by recursiveLockForRead(), recursiveLockForWrite(), recursiveUnlock(), and release().
int QReadWriteLockPrivate::waitingReaders = 0 |
Definition at line 54 of file qreadwritelock_p.h.
Referenced by lockForRead(), lockForWrite(), release(), and unlock().
int QReadWriteLockPrivate::waitingWriters = 0 |
Definition at line 55 of file qreadwritelock_p.h.
Referenced by lockForRead(), lockForWrite(), release(), and unlock().
std::condition_variable QReadWriteLockPrivate::writerCond |
Definition at line 48 of file qreadwritelock_p.h.
Referenced by lockForWrite(), and unlock().
int QReadWriteLockPrivate::writerCount = 0 |
Definition at line 53 of file qreadwritelock_p.h.
Referenced by lockForRead(), lockForWrite(), recursiveLockForWrite(), recursiveUnlock(), and release().