summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@theqtcompany.com>2015-05-26 10:56:59 +0300
committerMika Salmela <mika.salmela@theqtcompany.com>2015-05-26 09:53:47 +0000
commit90b22d995ff7a05956b7549003a88ebf11f5d588 (patch)
treedb7ec6b762bd279dfd53280b664429d252e8209a
parentf4eb704e0f9d293685dde932b4a3298f33bae22c (diff)
ThreadPooler future reservation under mutex
Added mutex for QFuture reservation on QThreadPooler Change-Id: I6fc399c2518180d78a7ed387a90330af02b1b8a5 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
-rw-r--r--src/core/jobs/qthreadpooler.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/jobs/qthreadpooler.cpp b/src/core/jobs/qthreadpooler.cpp
index 94d5b29c2..b5d7ba10b 100644
--- a/src/core/jobs/qthreadpooler.cpp
+++ b/src/core/jobs/qthreadpooler.cpp
@@ -119,6 +119,8 @@ QFuture<void> QThreadPooler::mapDependables(QVector<RunnableInterface *> &taskQu
QFuture<void> QThreadPooler::future()
{
+ const QMutexLocker locker(m_mutex);
+
if (!m_futureInterface)
return QFuture<void>();
else
@@ -127,6 +129,8 @@ QFuture<void> QThreadPooler::future()
void QThreadPooler::acquire(int add)
{
+ // The caller have to set the mutex
+
forever {
int localCount = m_taskCount.load();
if (m_taskCount.testAndSetOrdered(localCount, localCount + add))
@@ -136,6 +140,8 @@ void QThreadPooler::acquire(int add)
void QThreadPooler::release()
{
+ // The caller have to set the mutex
+
forever {
int localCount = m_taskCount.load();
@@ -149,6 +155,8 @@ void QThreadPooler::release()
int QThreadPooler::currentCount()
{
+ // The caller have to set the mutex
+
return m_taskCount.load();
}