diff options
author | Mika Salmela <mika.salmela@theqtcompany.com> | 2015-05-26 10:56:59 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@theqtcompany.com> | 2015-05-26 09:53:47 +0000 |
commit | 90b22d995ff7a05956b7549003a88ebf11f5d588 (patch) | |
tree | db7ec6b762bd279dfd53280b664429d252e8209a | |
parent | f4eb704e0f9d293685dde932b4a3298f33bae22c (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.cpp | 8 |
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(); } |