23class QWindowsThreadPoolRunner
25 Q_DISABLE_COPY_MOVE(QWindowsThreadPoolRunner)
28 template <
class RunnableFunction>
29 class Runnable :
public QRunnable
32 explicit Runnable(QMutex *m, QWaitCondition *c, RunnableFunction f)
33 : m_mutex(m), m_condition(c), m_function(f) {}
39 m_condition->wakeAll();
45 QWaitCondition *m_condition;
46 RunnableFunction m_function;
50 QWindowsThreadPoolRunner() {}
52 template <
class Function>
53 bool run(Function f,
unsigned long timeOutMSecs = 5000)
55 QThreadPool *pool = QThreadPool::globalInstance();
57 Runnable<Function> *runnable =
new Runnable<Function>(&m_mutex, &m_condition, f);
59 pool->start(runnable);
60 const bool ok = m_condition.wait(&m_mutex, timeOutMSecs);
63 pool->cancel(runnable);
69 QWaitCondition m_condition;
72 QWindowsThreadPoolRunner() {}
74 template <
class Function>
75 bool run(Function f,
unsigned long = 5000)