#ifndef THREAD_THREAD_POOL_H #define THREAD_THREAD_POOL_H #include #include #include #include #include "Base/Base.h" namespace Egametang { class ThreadPool: private boost::noncopyable { private: int thread_num_; boost::detail::atomic_count work_num_; volatile bool running_; boost::mutex mutex_; boost::condition_variable cond_; boost::condition_variable done_; std::list threads_; std::list > tasks_; void Runner(); public: ThreadPool(int num = 0); ~ThreadPool(); virtual void Start(); virtual void Stop(); virtual bool PushTask(boost::function task); }; } // namespace Egametang #endif // THREAD_THREAD_POOL_H