Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
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 (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)
 
QObjectList receiverList (const char *signal) 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
 
virtual void writeToDebugStream (QDebug &) 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
 
std::chrono::duration< int, std::milli > expiryTimeout = std::chrono::seconds(30)
 
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 receiveParentEvents: 1
 
uint unused: 20
 
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 140 of file qthreadpool.cpp.

Member Function Documentation

◆ activeThreadCount()

int QThreadPoolPrivate::activeThreadCount ( ) const

Definition at line 203 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 228 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 306 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 190 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 478 of file qthreadpool.cpp.

References QCoreApplication::closingDown().

Referenced by QCoreApplication::~QCoreApplication(), QImage::applyColorTransform(), QImage::colorTransformed(), 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()

Deletes all current threads.

Definition at line 265 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 243 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 367 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 234 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 143 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 211 of file qthreadpool.cpp.

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

+ Here is the call graph for this function:

◆ waitForDone()

bool QThreadPoolPrivate::waitForDone ( const QDeadlineTimer & timer)

Helper function only to be called from the public waitForDone()

Definition at line 290 of file qthreadpool.cpp.

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

+ Here is the call 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 141 of file qthreadpool_p.h.

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

◆ expiryTimeout

std::chrono::duration<int, std::milli> QThreadPoolPrivate::expiryTimeout = std::chrono::seconds(30)

Definition at line 146 of file qthreadpool_p.h.

Referenced by QThreadPoolThread::run().

◆ mutex

QMutex QThreadPoolPrivate::mutex
mutable

Definition at line 138 of file qthreadpool_p.h.

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

◆ noActiveThreads

QWaitCondition QThreadPoolPrivate::noActiveThreads

Definition at line 143 of file qthreadpool_p.h.

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

◆ objectName

QString QThreadPoolPrivate::objectName

Definition at line 144 of file qthreadpool_p.h.

Referenced by startThread().

◆ queue

QList<QueuePage *> QThreadPoolPrivate::queue

◆ requestedMaxThreadCount

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

Definition at line 147 of file qthreadpool_p.h.

◆ reservedThreads

int QThreadPoolPrivate::reservedThreads = 0

Definition at line 148 of file qthreadpool_p.h.

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

◆ stackSize

uint QThreadPoolPrivate::stackSize = 0

Definition at line 150 of file qthreadpool_p.h.

Referenced by QThreadPoolThread::QThreadPoolThread().

◆ threadPriority

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

Definition at line 151 of file qthreadpool_p.h.

Referenced by startThread(), and tryStart().

◆ waitingThreads

QQueue<QThreadPoolThread *> QThreadPoolPrivate::waitingThreads

Definition at line 140 of file qthreadpool_p.h.

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


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