#ifndef THREAD_THREADPOOL_H #define THREAD_THREADPOOL_H #include #include #include #include #include #include "Thread/ThreadTypedef.h" #include "Base/Marcos.h" namespace Egametang { class ThreadPool: private boost::noncopyable { private: int threadNum; boost::detail::atomic_count workNum; 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); virtual ~ThreadPool(); virtual void Wait(); virtual bool Schedule(boost::function task); }; } // namespace Egametang #endif // THREAD_THREADPOOL_H