24class QWindowsThreadPoolRunner
26 Q_DISABLE_COPY_MOVE(QWindowsThreadPoolRunner)
29 template <
class RunnableFunction>
30 class Runnable :
public QRunnable
33 explicit Runnable(QMutex *m, QWaitCondition *c, RunnableFunction f)
34 : m_mutex(m), m_condition(c), m_function(f) {}
40 m_condition->wakeAll();
46 QWaitCondition *m_condition;
47 RunnableFunction m_function;
51 QWindowsThreadPoolRunner() {}
53 template <
class Function>
54 bool run(Function f,
unsigned long timeOutMSecs = 5000)
56 QThreadPool *pool = QThreadPool::globalInstance();
58 Runnable<Function> *runnable =
new Runnable<Function>(&m_mutex, &m_condition, f);
60 pool->start(runnable);
61 const bool ok = m_condition.wait(&m_mutex, timeOutMSecs);
64 pool->cancel(runnable);
70 QWaitCondition m_condition;
73 QWindowsThreadPoolRunner() {}
75 template <
class Function>
76 bool run(Function f,
unsigned long = 5000)