#ifndef MANTID_KERNEL_THREADPOOLRUNNABLE_H_ #define MANTID_KERNEL_THREADPOOLRUNNABLE_H_ #include "MantidKernel/DllConfig.h" #include <Poco/Runnable.h> namespace Mantid { namespace Kernel { // Forward declares class ProgressBase; class ThreadScheduler; /** ThreadPoolRunnable : Class used by thread pool (and POCO) to * run inside a thread. * * @author Janik Zikovsky * @date 2011-02-23 */ class MANTID_KERNEL_DLL ThreadPoolRunnable : public Poco::Runnable { public: ThreadPoolRunnable(size_t threadnum, ThreadScheduler *scheduler, ProgressBase *prog = nullptr, double waitSec = 0.0); /// Return the thread number of this thread. size_t threadnum() { return m_threadnum; } void run() override; void clearWait(); private: /// ID of this thread. size_t m_threadnum; /// The ThreadScheduler instance taking care of task scheduling ThreadScheduler *m_scheduler; /// Progress reporter ProgressBase *m_prog; /// How many seconds you are allowed to wait with no tasks before exiting. double m_waitSec; }; } // namespace Mantid } // namespace Kernel #endif /* MANTID_KERNEL_THREADPOOLRUNNABLE_H_ */