#ifndef THREAD_THREAD_POOL_H #define THREAD_THREAD_POOL_H #include #include #include #include #include "Base/Base.h" namespace Hainan { 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(); void Start(); void Stop(); bool PushTask(boost::function task); }; typedef boost::shared_ptr ThreadPoolPtr; } // namespace Hainan #endif // THREAD_THREAD_POOL_H