Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
QThreadPoolPrivate Class Reference

#include <qthreadpool_p.h>

+ Inheritance diagram for QThreadPoolPrivate:
+ Collaboration diagram for QThreadPoolPrivate:

Public Member Functions

 QThreadPoolPrivate ()
 
bool tryStart (QRunnable *task)
 
void enqueueTask (QRunnable *task, int priority=0)
 
int activeThreadCount () const
 
void tryToStartMoreThreads ()
 
bool areAllThreadsActive () const
 
bool tooManyThreadsActive () const
 
int maxThreadCount () const
 
void startThread (QRunnable *runnable=nullptr)
 
void reset ()
 
bool waitForDone (int msecs)
 
bool waitForDone (const QDeadlineTimer &timer)
 
void clear ()
 
void stealAndRunRunnable (QRunnable *runnable)
 
void deletePageIfFinished (QueuePage *page)
 
- Public Member Functions inherited from QObjectPrivate
void ensureExtraData ()
 
 QObjectPrivate (int version=QObjectPrivateVersion)
 
virtual ~QObjectPrivate ()
 
void deleteChildren ()
 
void clearBindingStorage ()
 
void checkForIncompatibleLibraryVersion (int version) const
 
void setParent_helper (QObject *)
 
void moveToThread_helper ()
 
void setThreadData_helper (QThreadData *currentData, QThreadData *targetData, QBindingStatus *status)
 
void _q_reregisterTimers (void *pointer)
 
bool isSender (const QObject *receiver, const char *signal) const
 
QObjectList receiverList (const char *signal) const
 
QObjectList senderList () const
 
void ensureConnectionData ()
 
void addConnection (int signal, Connection *c)
 
int signalIndex (const char *signalName, const QMetaObject **meta=nullptr) const
 
bool isSignalConnected (uint signalIdx, bool checkDeclarative=true) const
 
bool maybeSignalConnected (uint signalIndex) const
 
bool isDeclarativeSignalConnected (uint signalIdx) const
 
void connectNotify (const QMetaMethod &signal)
 
void disconnectNotify (const QMetaMethod &signal)
 
void reinitBindingStorageAfterThreadMove ()
 
virtual std::string flagsForDumping () const
 
QtPrivate::QPropertyAdaptorSlotObjectgetPropertyAdaptorSlotObject (const QMetaProperty &property)
 
- Public Member Functions inherited from QObjectData
 QObjectData ()=default
 
virtual ~QObjectData ()=0
 
QMetaObjectdynamicMetaObject () const
 

Static Public Member Functions

static QThreadPoolqtGuiInstance ()
 Returns the QThreadPool instance for Qt Gui.
 
- Static Public Member Functions inherited from QObjectPrivate
static bool removeConnection (Connection *c)
 
static QObjectPrivateget (QObject *o)
 
static const QObjectPrivateget (const QObject *o)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot)
 
static QMetaObject::Connection connectImpl (const QObject *sender, int signal_index, const QObject *receiver, void **slot, QtPrivate::QSlotObjectBase *slotObj, int type, const int *types, const QMetaObject *senderMetaObject)
 
static QMetaObject::Connection connect (const QObject *sender, int signal_index, QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type)
 
static QMetaObject::Connection connect (const QObject *sender, int signal_index, const QObject *receiver, QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type)
 
static bool disconnect (const QObject *sender, int signal_index, void **slot)
 
static bool disconnect (const QObject *sender, int signal_index, const QObject *receiver, void **slot)
 

Public Attributes

QMutex mutex
 
QSet< QThreadPoolThread * > allThreads
 
QQueue< QThreadPoolThread * > waitingThreads
 
QQueue< QThreadPoolThread * > expiredThreads
 
QList< QueuePage * > queue
 
QWaitCondition noActiveThreads
 
QString objectName
 
int expiryTimeout = 30000
 
int requestedMaxThreadCount = QThread::idealThreadCount()
 
int reservedThreads = 0
 
int activeThreads = 0
 
uint stackSize = 0
 
QThread::Priority threadPriority = QThread::InheritPriority
 
- Public Attributes inherited from QObjectPrivate
ExtraDataextraData
 
QAtomicPointer< QThreadDatathreadData
 
QAtomicPointer< ConnectionDataconnections
 
union { 
 
   QObject *   currentChildBeingDeleted 
 
   QAbstractDeclarativeData *   declarativeData 
 
};  
 
QAtomicPointer< QtSharedPointer::ExternalRefCountDatasharedRefcount
 
- Public Attributes inherited from QObjectData
QObjectq_ptr
 
QObjectparent
 
QObjectList children
 
uint isWidget: 1
 
uint blockSig: 1
 
uint wasDeleted: 1
 
uint isDeletingChildren: 1
 
uint sendChildEvents: 1
 
uint receiveChildEvents: 1
 
uint isWindow: 1
 
uint deleteLaterCalled: 1
 
uint isQuickItem: 1
 
uint willBeWidget: 1
 
uint wasWidget: 1
 
uint unused: 21
 
QAtomicInt postedEvents
 
QDynamicMetaObjectDatametaObject
 
QBindingStorage bindingStorage
 

Friends

class QThreadPoolThread
 

Additional Inherited Members

- Public Types inherited from QObjectPrivate
typedef void(* StaticMetaCallFunction) (QObject *, QMetaObject::Call, int, void **)
 
using ConnectionDataPointer = QExplicitlySharedDataPointer< ConnectionData >
 

Detailed Description

Definition at line 111 of file qthreadpool_p.h.

Constructor & Destructor Documentation

◆ QThreadPoolPrivate()

QThreadPoolPrivate::QThreadPoolPrivate ( )

Definition at line 138 of file qthreadpool.cpp.

Member Function Documentation

◆ activeThreadCount()

int QThreadPoolPrivate::activeThreadCount ( ) const

Definition at line 201 of file qthreadpool.cpp.

References allThreads, expiredThreads, reservedThreads, QSet< T >::size(), QList< T >::size(), and waitingThreads.

Referenced by areAllThreadsActive(), and tooManyThreadsActive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ areAllThreadsActive()

bool QThreadPoolPrivate::areAllThreadsActive ( ) const

Definition at line 226 of file qthreadpool.cpp.

References activeThreadCount(), maxThreadCount(), and reservedThreads.

Referenced by tryStart().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ clear()

void QThreadPoolPrivate::clear ( )

Definition at line 309 of file qthreadpool.cpp.

References QList< T >::isEmpty(), mutex, page, queue, QMutexLocker< Mutex >::relock(), QList< T >::takeLast(), and QMutexLocker< Mutex >::unlock().

+ Here is the call graph for this function:

◆ deletePageIfFinished()

void QThreadPoolPrivate::deletePageIfFinished ( QueuePage page)

◆ enqueueTask()

void QThreadPoolPrivate::enqueueTask ( QRunnable task,
int  priority = 0 
)

Definition at line 188 of file qthreadpool.cpp.

References comparePriority(), QList< T >::constBegin(), QList< T >::constEnd(), QList< T >::insert(), it, page, Q_ASSERT, and queue.

Referenced by tryStart().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ maxThreadCount()

int QThreadPoolPrivate::maxThreadCount ( ) const
inline

Definition at line 127 of file qthreadpool_p.h.

References qMax().

Referenced by areAllThreadsActive(), and tooManyThreadsActive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qtGuiInstance()

QThreadPool * QThreadPoolPrivate::qtGuiInstance ( )
static

Returns the QThreadPool instance for Qt Gui.

Definition at line 481 of file qthreadpool.cpp.

References QCoreApplication::closingDown().

Referenced by QCoreApplication::~QCoreApplication(), QImage::applyColorTransform(), convert_generic(), convert_generic_inplace(), convert_generic_inplace_over_rgb64(), convert_generic_over_rgb64(), and multithread_pixels_function().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ reset()

void QThreadPoolPrivate::reset ( )

Helper function only to be called from waitForDone(int)

Deletes all current threads.

Definition at line 263 of file qthreadpool.cpp.

References allThreads, QList< T >::clear(), expiredThreads, QMutex::lock(), mutex, QMutex::unlock(), and waitingThreads.

Referenced by waitForDone().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ startThread()

void QThreadPoolPrivate::startThread ( QRunnable runnable = nullptr)

Definition at line 241 of file qthreadpool.cpp.

References activeThreads, allThreads, QSet< T >::contains(), QSet< T >::insert(), QString::isEmpty(), objectName, Q_ASSERT, and threadPriority.

Referenced by tryStart().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ stealAndRunRunnable()

void QThreadPoolPrivate::stealAndRunRunnable ( QRunnable runnable)

Searches for runnable in the queue, removes it from the queue and runs it if found. This function does not return until the runnable has completed.

Definition at line 370 of file qthreadpool.cpp.

References QRunnable::autoDelete(), and QRunnable::run().

+ Here is the call graph for this function:

◆ tooManyThreadsActive()

bool QThreadPoolPrivate::tooManyThreadsActive ( ) const

Definition at line 232 of file qthreadpool.cpp.

References activeThreadCount(), maxThreadCount(), and reservedThreads.

Referenced by QThreadPoolThread::run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tryStart()

bool QThreadPoolPrivate::tryStart ( QRunnable task)

Definition at line 141 of file qthreadpool.cpp.

References activeThreads, allThreads, areAllThreadsActive(), QQueue< T >::dequeue(), enqueueTask(), expiredThreads, QSet< T >::isEmpty(), QList< T >::isEmpty(), QThread::isFinished(), Q_ASSERT, QThreadPoolThread::runnable, QThread::start(), startThread(), QList< T >::takeFirst(), task, threadPriority, QThread::wait(), and waitingThreads.

Referenced by tryToStartMoreThreads().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tryToStartMoreThreads()

void QThreadPoolPrivate::tryToStartMoreThreads ( )

Definition at line 209 of file qthreadpool.cpp.

References QList< T >::first(), QByteArray::first(), QList< T >::isEmpty(), page, queue, QList< T >::removeFirst(), and tryStart().

+ Here is the call graph for this function:

◆ waitForDone() [1/2]

bool QThreadPoolPrivate::waitForDone ( const QDeadlineTimer timer)

Helper function only to be called from waitForDone(int)

Definition at line 288 of file qthreadpool.cpp.

References activeThreads, QList< T >::isEmpty(), mutex, noActiveThreads, queue, timer, and QWaitCondition::wait().

+ Here is the call graph for this function:

◆ waitForDone() [2/2]

bool QThreadPoolPrivate::waitForDone ( int  msecs)

Definition at line 296 of file qthreadpool.cpp.

References mutex, reset(), timer, and waitForDone().

Referenced by waitForDone().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ QThreadPoolThread

friend class QThreadPoolThread
friend

Definition at line 114 of file qthreadpool_p.h.

Member Data Documentation

◆ activeThreads

int QThreadPoolPrivate::activeThreads = 0

◆ allThreads

QSet<QThreadPoolThread *> QThreadPoolPrivate::allThreads

◆ expiredThreads

QQueue<QThreadPoolThread *> QThreadPoolPrivate::expiredThreads

Definition at line 142 of file qthreadpool_p.h.

Referenced by activeThreadCount(), reset(), QThreadPoolThread::run(), and tryStart().

◆ expiryTimeout

int QThreadPoolPrivate::expiryTimeout = 30000

Definition at line 147 of file qthreadpool_p.h.

Referenced by QThreadPoolThread::run().

◆ mutex

QMutex QThreadPoolPrivate::mutex
mutable

Definition at line 139 of file qthreadpool_p.h.

Referenced by clear(), reset(), QThreadPoolThread::run(), waitForDone(), and waitForDone().

◆ noActiveThreads

QWaitCondition QThreadPoolPrivate::noActiveThreads

Definition at line 144 of file qthreadpool_p.h.

Referenced by QThreadPoolThread::registerThreadInactive(), and waitForDone().

◆ objectName

QString QThreadPoolPrivate::objectName

Definition at line 145 of file qthreadpool_p.h.

Referenced by startThread().

◆ queue

QList<QueuePage *> QThreadPoolPrivate::queue

◆ requestedMaxThreadCount

int QThreadPoolPrivate::requestedMaxThreadCount = QThread::idealThreadCount()

Definition at line 148 of file qthreadpool_p.h.

◆ reservedThreads

int QThreadPoolPrivate::reservedThreads = 0

Definition at line 149 of file qthreadpool_p.h.

Referenced by activeThreadCount(), areAllThreadsActive(), and tooManyThreadsActive().

◆ stackSize

uint QThreadPoolPrivate::stackSize = 0

Definition at line 151 of file qthreadpool_p.h.

Referenced by QThreadPoolThread::QThreadPoolThread().

◆ threadPriority

QThread::Priority QThreadPoolPrivate::threadPriority = QThread::InheritPriority

Definition at line 152 of file qthreadpool_p.h.

Referenced by startThread(), and tryStart().

◆ waitingThreads

QQueue<QThreadPoolThread *> QThreadPoolPrivate::waitingThreads

Definition at line 141 of file qthreadpool_p.h.

Referenced by activeThreadCount(), reset(), QThreadPoolThread::run(), and tryStart().


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