#ifndef __TASKQUEUE_H__ #define __TASKQUEUE_H__ #include #include #include #include struct Task { bool mustExecute; // 结束任务队列时,是否执行完毕 std::function executor; }; class TaskQueue { public: TaskQueue(); virtual ~TaskQueue(); void quit(); void wait(); void post(std::function task); void post(bool mustExecute, std::function task); private: void handle(); private: volatile bool m_quit; std::mutex m_mutex; std::condition_variable m_condition; std::queue m_queue; std::unique_ptr m_thread; }; #endif /* __TASKQUEUE_H__ */