#ifndef _TASK_QUEUE_H_
#define _TASK_QUEUE_H_
#include <string>
#include <queue>
#include <boost/thread.hpp>
template<class T>
class TaskQueue
{
public:
TaskQueue(){
queue_.clear();
}
virtual ~TaskQueue(){
};
/**
* @Appends the task to the queue
* @param the task object
**/
virtual void append(const T& _t){
thr_lck lck(mtx_);
queue_.push(_t);
}
/**
* @Return the current size of the queue
* @returns the queue size
**/
virtual size_t queueSize() const {
thr_lck lck(mtx_);
return queue_.size();
}
/**
* @Return the queue
* @returns the message queue
**/
virtual bool empty() {
thr_lck lck(mtx_);
return queue_.empty();
}
/**
* @Return the queue
* @returns the message queue
**/
virtual std::queue<T>& getQueue() {
thr_lck lck(mtx_);
return queue_;
}
/**
* @Return the queue
* @returns the message queue
**/
virtual const std::queue<T>& getQueue() const {
thr_lck lck(mtx_);
return queue_;
}
/**
* @Return the oldest task from the queue
* @returns the front task
**/
virtual T front() {
thr_lck lck(mtx_);
T message;
if (!queue_.empty())
{
message = queue_.front();
}
return message;
}
/**
* @Pop the oldest task from the front of the queue.
* @returns the oldest task
**/
virtual T popMessage(){
thr_lck lck(mtx_);
T message;
if (!queue_.empty())
{
message = queue_.front();
queue_.pop();
}
return message;
}
protected:
typedef std::queue<T> task_queue;
task_queue queue_;
typedef boost::mutex::scoped_lock thr_lck;
boost::mutex mtx_;
};
#endif
C++队列模板使用std::queue
最新推荐文章于 2025-09-11 23:37:48 发布
本文介绍了如何使用C++实现一个线程安全的任务队列(TaskQueue)类,该类基于std::queue并引入了boost库进行线程同步。提供了包括添加任务、获取队列大小、判断队列是否为空、获取队列引用、获取队列最前面的任务以及弹出队列最前面任务等方法。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
Stable-Diffusion-3.5
图片生成
Stable-Diffusion
Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率
2578

被折叠的 条评论
为什么被折叠?



