summaryrefslogtreecommitdiffstats
path: root/src/core/jobs/qthreadpooler_p.h
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@theqtcompany.com>2015-04-24 13:21:41 +0300
committerMika Salmela <mika.salmela@theqtcompany.com>2015-04-24 10:48:27 +0000
commit1d1b84a579eff2e245e491012104b7c5b5d655d1 (patch)
tree46dc47c91145182ed96214c97a7ce18300a1b1cf /src/core/jobs/qthreadpooler_p.h
parent1a4f9e8953753172ffde2fe6389ad8c6e40c4d1e (diff)
Implement ThreadPooler using QThreadPool
Re-implemented ThreadPooler to use QRunnable and QThreadPool. Change-Id: I3da0182489b648dcb6b671c57b4474c183bddeec Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
Diffstat (limited to 'src/core/jobs/qthreadpooler_p.h')
-rw-r--r--src/core/jobs/qthreadpooler_p.h31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/core/jobs/qthreadpooler_p.h b/src/core/jobs/qthreadpooler_p.h
index 6579e6283..9abbdc8d0 100644
--- a/src/core/jobs/qthreadpooler_p.h
+++ b/src/core/jobs/qthreadpooler_p.h
@@ -41,15 +41,14 @@
#include "dependencyhandler_p.h"
#include <QtCore/QObject>
-#include <QtCore/QWaitCondition>
#include <QtCore/QSharedPointer>
+#include <QtCore/QFutureInterface>
+#include <QtCore/QFuture>
QT_BEGIN_NAMESPACE
namespace Qt3D {
-class QThreadPoolerPrivate;
-
class QThreadPooler : public QObject
{
Q_OBJECT
@@ -58,25 +57,23 @@ public:
explicit QThreadPooler(QObject *parent = 0);
~QThreadPooler();
- int maxThreadCount() const;
- void setMaxThreadCount(int threadCount);
- QSharedPointer<TaskInterface> nextTask();
- void enqueueTask(const QSharedPointer<TaskInterface> &task);
- void flush();
- void startRunning();
- void stopRunning();
- void setDependencyHandler(DependencyHandler *handler);
+ QFuture<void> mapDependables(QVector<RunnableInterface *> &taskQueue);
+ void taskFinished(QVector<RunnableInterface *> tasks);
+ QFuture<void> future();
-signals:
- void shuttingDown();
+ void setDependencyHandler(DependencyHandler *handler);
private:
- void manageThreads();
- bool hasDependencies(const QSharedPointer<TaskInterface> &task);
- bool isIdling();
+ void enqueueTasks(QVector<RunnableInterface *> &tasks);
+ void acquire(int add);
+ void release();
+ int currentCount();
private:
- Q_DECLARE_PRIVATE(QThreadPooler)
+ QFutureInterface<void> *m_futureInterface;
+ QMutex *m_mutex;
+ DependencyHandler *m_dependencyHandler;
+ QAtomicInt m_taskCount;
};
} // namespace Qt3D