File indexing completed on 2024-05-12 15:57:03
0001 /* 0002 * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KISSHAREDTHREADPOOLADAPTER_H 0008 #define KISSHAREDTHREADPOOLADAPTER_H 0009 0010 #include <QMutex> 0011 #include <QWaitCondition> 0012 0013 #include <KisSharedRunnable.h> 0014 0015 class QThreadPool; 0016 0017 class KRITAGLOBAL_EXPORT KisSharedThreadPoolAdapter 0018 { 0019 public: 0020 KisSharedThreadPoolAdapter(QThreadPool *parentPool); 0021 ~KisSharedThreadPoolAdapter(); 0022 0023 void start(KisSharedRunnable *runnable, int priority = 0); 0024 bool tryStart(KisSharedRunnable *runnable); 0025 0026 bool waitForDone(int msecs = -1); 0027 0028 private: 0029 friend class KisSharedRunnable; 0030 void notifyJobCompleted(); 0031 0032 KisSharedThreadPoolAdapter(KisSharedThreadPoolAdapter &rhs) = delete; 0033 0034 private: 0035 QThreadPool *m_parentPool; 0036 QMutex m_mutex; 0037 QWaitCondition m_waitCondition; 0038 int m_numRunningJobs; 0039 }; 0040 0041 #endif // KISSHAREDTHREADPOOLADAPTER_H