diff options
author | Mika Salmela <mika.salmela@theqtcompany.com> | 2015-04-24 13:21:41 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@theqtcompany.com> | 2015-04-24 10:48:27 +0000 |
commit | 1d1b84a579eff2e245e491012104b7c5b5d655d1 (patch) | |
tree | 46dc47c91145182ed96214c97a7ce18300a1b1cf /src/core/jobs/qthreadpooler_p.h | |
parent | 1a4f9e8953753172ffde2fe6389ad8c6e40c4d1e (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.h | 31 |
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 |