#ifndef CCQUEUE_H #define CCQUEUE_H #include "queue" #include "mutex" template class CCQueue :public std::queue { public: using std::queue::queue; /** * 有锁的添加方法 * @param item 添加的值 */ void add_lock(const T& item) { mutex_.lock(); std::queue::push(item); mutex_.unlock(); } /** * 有锁的删除方法 * @param item 删除的值 */ void remove_lock(const T& item) { mutex_.lock(); std::queue::pop(item); mutex_.unlock(); } /** * 有锁的清空方法 */ void clear_lock() { mutex_.lock(); std::queue::clear(); mutex_.unlock(); } /** * 有锁的获取方法 * @return 取出队列第一个元素 */ T poll_lock() { mutex_.lock(); T item = std::queue::front(); std::queue::pop(); mutex_.unlock(); return item; } /** * 有锁的判断非空 * @return 是否为空 */ bool IsEmpty() { mutex_.lock(); const bool is_empty = std::queue::empty(); mutex_.unlock(); return is_empty; } protected: std::mutex mutex_; }; #endif