Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QReadWriteLockPrivate Class Reference

#include <qreadwritelock_p.h>

Collaboration diagram for QReadWriteLockPrivate:

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 QReadWriteLockPrivateallocate ()
static quintptr describeState (void *dd) noexcept
template<typename Prep, typename DoWait>
static bool waitConditionWait (QReadWriteLock *readWriteLock, Prep &&prep, DoWait &&doWait)

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

Static Public Attributes

static constexpr quintptr StateLockedForRead = QReadWriteLock::StateLockedForRead
static constexpr quintptr StateLockedForWrite = QReadWriteLock::StateLockedForWrite
static constexpr quintptr StateMask = QReadWriteLock::StateMask
static constexpr quintptr MultiplyLocked = QReadWriteLock::Counter
static constexpr quintptr IsRecursiveLock = MultiplyLocked << 1
static constexpr quintptr RecursivelyLockedForWrite

Detailed Description

Definition at line 29 of file qreadwritelock_p.h.

Constructor & Destructor Documentation

◆ QReadWriteLockPrivate()

QReadWriteLockPrivate::QReadWriteLockPrivate ( bool isRecursive = false)
inlineexplicit

Definition at line 41 of file qreadwritelock_p.h.

Member Function Documentation

◆ allocate()

QReadWriteLockPrivate * QReadWriteLockPrivate::allocate ( )
static

Definition at line 586 of file qreadwritelock.cpp.

◆ describeState()

quintptr QReadWriteLockPrivate::describeState ( void * dd)
inlinestaticnoexcept

Describes the state of the QReadWriteLock whose private is dd.

Returns one of: \list

  • 0 (unlocked)
  • IsRecursiveLock (still unlocked)
  • StateLockedForRead
  • {StateLockedForRead | IsRecursiveLock}
  • StateLockedForWrite
  • {StateLockedForWrite | IsRecursiveLock}
  • {StateLockedForWrite | IsRecursiveLock | MultiplyLocked} = RecursivelyLockedForWrite \endlist

Definition at line 94 of file qreadwritelock_p.h.

◆ lockForRead()

bool QReadWriteLockPrivate::lockForRead ( std::unique_lock< std::mutex > & lock,
QDeadlineTimer timeout )

Definition at line 435 of file qreadwritelock.cpp.

◆ lockForWrite()

bool QReadWriteLockPrivate::lockForWrite ( std::unique_lock< std::mutex > & lock,
QDeadlineTimer timeout )

Definition at line 457 of file qreadwritelock.cpp.

◆ recursiveLockForRead()

bool QReadWriteLockPrivate::recursiveLockForRead ( QDeadlineTimer timeout)

Definition at line 501 of file qreadwritelock.cpp.

◆ recursiveLockForWrite()

bool QReadWriteLockPrivate::recursiveLockForWrite ( QDeadlineTimer timeout)

Definition at line 523 of file qreadwritelock.cpp.

◆ recursiveUnlock()

void QReadWriteLockPrivate::recursiveUnlock ( )

Definition at line 541 of file qreadwritelock.cpp.

◆ release()

void QReadWriteLockPrivate::release ( )

Definition at line 596 of file qreadwritelock.cpp.

◆ unlock()

void QReadWriteLockPrivate::unlock ( )

Definition at line 487 of file qreadwritelock.cpp.

◆ waitConditionWait()

template<typename Prep, typename DoWait>
bool QReadWriteLockPrivate::waitConditionWait ( QReadWriteLock * readWriteLock,
Prep && prep,
DoWait && doWait )
inlinestatic

Definition at line 129 of file qreadwritelock_p.h.

Member Data Documentation

◆ currentReaders

QVarLengthArray<Reader, 16> QReadWriteLockPrivate::currentReaders

Definition at line 72 of file qreadwritelock_p.h.

◆ currentWriter

Qt::HANDLE QReadWriteLockPrivate::currentWriter = {}

Definition at line 65 of file qreadwritelock_p.h.

◆ id

int QReadWriteLockPrivate::id = 0

Definition at line 60 of file qreadwritelock_p.h.

◆ IsRecursiveLock

quintptr QReadWriteLockPrivate::IsRecursiveLock = MultiplyLocked << 1
staticconstexpr

Definition at line 37 of file qreadwritelock_p.h.

◆ MultiplyLocked

quintptr QReadWriteLockPrivate::MultiplyLocked = QReadWriteLock::Counter
staticconstexpr

Definition at line 36 of file qreadwritelock_p.h.

◆ mutex

std::mutex QReadWriteLockPrivate::mutex

Definition at line 47 of file qreadwritelock_p.h.

◆ readerCond

std::condition_variable QReadWriteLockPrivate::readerCond

Definition at line 45 of file qreadwritelock_p.h.

◆ readerCount

int QReadWriteLockPrivate::readerCount = 0

Definition at line 48 of file qreadwritelock_p.h.

◆ recursive

const bool QReadWriteLockPrivate::recursive

Definition at line 52 of file qreadwritelock_p.h.

◆ RecursivelyLockedForWrite

quintptr QReadWriteLockPrivate::RecursivelyLockedForWrite
staticconstexpr
Initial value:
=
static constexpr quintptr MultiplyLocked
static constexpr quintptr StateLockedForWrite
static constexpr quintptr IsRecursiveLock

Definition at line 38 of file qreadwritelock_p.h.

◆ StateLockedForRead

quintptr QReadWriteLockPrivate::StateLockedForRead = QReadWriteLock::StateLockedForRead
staticconstexpr

Definition at line 33 of file qreadwritelock_p.h.

◆ StateLockedForWrite

quintptr QReadWriteLockPrivate::StateLockedForWrite = QReadWriteLock::StateLockedForWrite
staticconstexpr

Definition at line 34 of file qreadwritelock_p.h.

◆ StateMask

quintptr QReadWriteLockPrivate::StateMask = QReadWriteLock::StateMask
staticconstexpr

Definition at line 35 of file qreadwritelock_p.h.

◆ waitingReaders

int QReadWriteLockPrivate::waitingReaders = 0

Definition at line 50 of file qreadwritelock_p.h.

◆ waitingWriters

int QReadWriteLockPrivate::waitingWriters = 0

Definition at line 51 of file qreadwritelock_p.h.

◆ writerCond

std::condition_variable QReadWriteLockPrivate::writerCond

Definition at line 44 of file qreadwritelock_p.h.

◆ writerCount

int QReadWriteLockPrivate::writerCount = 0

Definition at line 49 of file qreadwritelock_p.h.


The documentation for this class was generated from the following files: