#ifndef THREAD_POOL_HPP #define THREAD_POOL_HPP #ifdef _MSC_VER #pragma once #endif #include #include #include #include #include class ThreadPool { public: ThreadPool(int threads); ~ThreadPool(); void Enqueue(std::function f); void Shutdown(); const ThreadPool &operator=(ThreadPool &pool); private: std::vector threadPool; std::queue> tasks; std::mutex tasksMutex; std::condition_variable condition; bool terminate; bool stopped; void Invoke(); }; #endif