diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-01-28 12:36:59 +0000 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-01-29 10:55:42 +0000 |
commit | f2c3b52c6c513ebba9dc0db69efe8bdbf6be8334 (patch) | |
tree | ba924e5dfb28339e517dc1868bfe5ecf228d261d /src/corelib | |
parent | bd520ccc3c5742e7af61fef66bab96575b7b67ac (diff) |
Revert "Port QThreadPool to the new property system"
This reverts commit 8f8405e04642b98663d4752d4ae76c304ae33b01.
Reason for revert: Appears not entirely thread-safe and caused QTBUG-90705
Change-Id: I390c0b1a555a18e6a095b52010371d017071e26b
Fixes: QTBUG-90705
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/thread/qthreadpool.cpp | 37 | ||||
-rw-r--r-- | src/corelib/thread/qthreadpool.h | 9 | ||||
-rw-r--r-- | src/corelib/thread/qthreadpool_p.h | 13 |
3 files changed, 17 insertions, 42 deletions
diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp index b1f538fa43..6d258af9df 100644 --- a/src/corelib/thread/qthreadpool.cpp +++ b/src/corelib/thread/qthreadpool.cpp @@ -163,7 +163,7 @@ void QThreadPoolThread::registerThreadInactive() /* \internal */ -QThreadPoolPrivate::QThreadPoolPrivate() +QThreadPoolPrivate:: QThreadPoolPrivate() { } bool QThreadPoolPrivate::tryStart(QRunnable *task) @@ -223,8 +223,10 @@ void QThreadPoolPrivate::enqueueTask(QRunnable *runnable, int priority) int QThreadPoolPrivate::activeThreadCount() const { - return int(allThreads.count() - expiredThreads.count() - waitingThreads.count() - + reservedThreads); + return (allThreads.count() + - expiredThreads.count() + - waitingThreads.count() + + reservedThreads); } void QThreadPoolPrivate::tryToStartMoreThreads() @@ -603,15 +605,11 @@ int QThreadPool::expiryTimeout() const void QThreadPool::setExpiryTimeout(int expiryTimeout) { Q_D(QThreadPool); + if (d->expiryTimeout == expiryTimeout) + return; d->expiryTimeout = expiryTimeout; } -QBindable<int> QThreadPool::bindableExpiryTimeout() -{ - Q_D(QThreadPool); - return &d->expiryTimeout; -} - /*! \property QThreadPool::maxThreadCount \brief the maximum number of threads used by the thread pool. @@ -633,18 +631,11 @@ void QThreadPool::setMaxThreadCount(int maxThreadCount) Q_D(QThreadPool); QMutexLocker locker(&d->mutex); - const auto maxThreadCountChanged = maxThreadCount != d->maxThreadCount; - // Rewrite the value in any case, to make sure the binding is cleared. - d->maxThreadCount = maxThreadCount; - - if (maxThreadCountChanged) - d->tryToStartMoreThreads(); -} + if (maxThreadCount == d->maxThreadCount) + return; -QBindable<int> QThreadPool::bindableMaxThreadCount() -{ - Q_D(QThreadPool); - return &d->maxThreadCount; + d->maxThreadCount = maxThreadCount; + d->tryToStartMoreThreads(); } /*! \property QThreadPool::activeThreadCount @@ -707,12 +698,6 @@ uint QThreadPool::stackSize() const return d->stackSize; } -QBindable<uint> QThreadPool::bindableStackSize() -{ - Q_D(QThreadPool); - return &d->stackSize; -} - /*! Releases a thread previously reserved by a call to reserveThread(). diff --git a/src/corelib/thread/qthreadpool.h b/src/corelib/thread/qthreadpool.h index 3e601dd963..a559eff49a 100644 --- a/src/corelib/thread/qthreadpool.h +++ b/src/corelib/thread/qthreadpool.h @@ -56,10 +56,10 @@ class Q_CORE_EXPORT QThreadPool : public QObject { Q_OBJECT Q_DECLARE_PRIVATE(QThreadPool) - Q_PROPERTY(int expiryTimeout READ expiryTimeout WRITE setExpiryTimeout BINDABLE bindableExpiryTimeout) - Q_PROPERTY(int maxThreadCount READ maxThreadCount WRITE setMaxThreadCount BINDABLE bindableMaxThreadCount) + Q_PROPERTY(int expiryTimeout READ expiryTimeout WRITE setExpiryTimeout) + Q_PROPERTY(int maxThreadCount READ maxThreadCount WRITE setMaxThreadCount) Q_PROPERTY(int activeThreadCount READ activeThreadCount) - Q_PROPERTY(uint stackSize READ stackSize WRITE setStackSize BINDABLE bindableStackSize) + Q_PROPERTY(uint stackSize READ stackSize WRITE setStackSize) friend class QFutureInterfaceBase; public: @@ -76,17 +76,14 @@ public: int expiryTimeout() const; void setExpiryTimeout(int expiryTimeout); - QBindable<int> bindableExpiryTimeout(); int maxThreadCount() const; void setMaxThreadCount(int maxThreadCount); - QBindable<int> bindableMaxThreadCount(); int activeThreadCount() const; void setStackSize(uint stackSize); uint stackSize() const; - QBindable<uint> bindableStackSize(); void reserveThread(); void releaseThread(); diff --git a/src/corelib/thread/qthreadpool_p.h b/src/corelib/thread/qthreadpool_p.h index 019f24ce4d..4d73a480b5 100644 --- a/src/corelib/thread/qthreadpool_p.h +++ b/src/corelib/thread/qthreadpool_p.h @@ -58,7 +58,6 @@ #include "QtCore/qset.h" #include "QtCore/qqueue.h" #include "private/qobject_p.h" -#include "private/qproperty_p.h" QT_REQUIRE_CONFIG(thread); @@ -174,17 +173,11 @@ public: QList<QueuePage *> queue; QWaitCondition noActiveThreads; - Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QThreadPoolPrivate, int, expiryTimeout, 30000) - - void setMaxThreadCount(int count) { q_func()->setMaxThreadCount(count); } - Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QThreadPoolPrivate, int, maxThreadCount, - &QThreadPoolPrivate::setMaxThreadCount, - QThread::idealThreadCount()) - + int expiryTimeout = 30000; + int maxThreadCount = QThread::idealThreadCount(); int reservedThreads = 0; int activeThreads = 0; - - Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QThreadPoolPrivate, uint, stackSize, 0) + uint stackSize = 0; }; QT_END_NAMESPACE |