nuclear@24: #ifndef THREAD_POOL_H_ nuclear@24: #define THREAD_POOL_H_ nuclear@24: nuclear@24: #include nuclear@24: #include nuclear@24: #include nuclear@24: #include nuclear@24: #include nuclear@24: nuclear@24: class ThreadPool { nuclear@24: private: nuclear@24: int num_threads; nuclear@24: std::thread *thread; // array of threads nuclear@24: nuclear@24: std::list> workq; nuclear@24: std::mutex workq_mutex; nuclear@24: std::condition_variable condvar; nuclear@24: nuclear@24: bool quit; nuclear@24: nuclear@24: void thread_func(); nuclear@24: nuclear@24: public: nuclear@24: ThreadPool(int num_threads = -1); nuclear@24: ~ThreadPool(); nuclear@24: nuclear@24: void add_work(std::function func); nuclear@24: }; nuclear@24: nuclear@24: #endif // THREAD_POOL_H_