diff options
| author | Samuel Gaist <samuel.gaist@idiap.ch> | 2021-02-23 13:02:26 +0100 |
|---|---|---|
| committer | Samuel Gaist <samuel.gaist@idiap.ch> | 2021-04-03 09:14:55 +0200 |
| commit | bc00daae71df8a9691403b43e454aed4868ff9f3 (patch) | |
| tree | e5f0244d46ae25c8a5466b0bfbfc16a858be2ffe /src/corelib/thread/qthreadpool.cpp | |
| parent | c2a09242c82b07064ddd99557e7eaf98556d5170 (diff) | |
Add support to set thread priority to QThreadPool
Currently, QThreadPool's generated threads inherit the priority from the
thread they are created and that cannot be changed. This merge request
adds a property to QThreadPool so that the priority of the threads can
be different.
The default behavior does not change.
[ChangeLog][QtCore][QThreadPool] QThreadPool can now be configured to
use a different thread priority when creating new threads than the one
it inherits from the thread it was created in. This will only apply to
the threads started after the property is changed.
Fixes: QTBUG-3481
Change-Id: Ic98d4312d055a3357771abb656516ebd0715918d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/thread/qthreadpool.cpp')
| -rw-r--r-- | src/corelib/thread/qthreadpool.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp index 6d258af9df0..911bf8a53a1 100644 --- a/src/corelib/thread/qthreadpool.cpp +++ b/src/corelib/thread/qthreadpool.cpp @@ -194,7 +194,7 @@ bool QThreadPoolPrivate::tryStart(QRunnable *task) ++activeThreads; thread->runnable = task; - thread->start(); + thread->start(threadPriority); return true; } @@ -265,7 +265,7 @@ void QThreadPoolPrivate::startThread(QRunnable *runnable) ++activeThreads; thread->runnable = runnable; - thread.take()->start(); + thread.take()->start(threadPriority); } /*! @@ -698,6 +698,32 @@ uint QThreadPool::stackSize() const return d->stackSize; } +/*! \property QThreadPool::threadPriority + \brief the thread priority for new worker threads. + + The value of the property is only used when the thread pool starts + new threads. Changing it has no effect for already running threads. + + The default value is QThread::InheritPriority, which makes QThread + use the same priority as the one the QThreadPool object lives in. + + \sa QThread::ThreadPriority + + \since 6.2 +*/ + +void QThreadPool::setThreadPriority(QThread::Priority priority) +{ + Q_D(QThreadPool); + d->threadPriority = priority; +} + +QThread::Priority QThreadPool::threadPriority() const +{ + Q_D(const QThreadPool); + return d->threadPriority; +} + /*! Releases a thread previously reserved by a call to reserveThread(). |
