关闭

C++队列模板使用std::queue

2259人阅读 评论(0) 收藏 举报
分类:
#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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:113153次
    • 积分:1957
    • 等级:
    • 排名:千里之外
    • 原创:85篇
    • 转载:21篇
    • 译文:0篇
    • 评论:10条
    最新评论