#pragma once #include #include #include #include #include #include class TaskManager { public: typedef std::string Job; TaskManager(); ~TaskManager(); void start(); void stop(); void wait(); bool busy(); private: void loop(); private: bool running; bool stopping; uint32_t maxThreads; uint32_t activeThreads; std::queue queue; std::mutex queueMutex; std::condition_variable loopConditional; std::condition_variable waitConditional; std::vector threads; };