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

原创 2016年05月31日 13:24:33
#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++ STL模板之queue队列的用法】

--Queue用法   2010-08-17 21:13:06|  分类: STL--标准模板库|举报|字号 订阅 #include #include #i...

【数据结构】顺序队列 Queue

08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de...

QT循环队列实时处理数据(二)

QT的项目中,需要实时处理通过socket获取的数据,并且实时处理,保证数据不会丢失,这个循环队列的方式,简单,高效是一个不错的选择!...

QT中消息处理机制

Qt 事件系统 Qt是事件驱动的, 程序每个动作都是由某个事件所触发。 Qt事件的类型很多,我们可以通过查看Qt的 manual中的Event System 和 QEvent 来获得各个事件的详细信息...

qt多线程,多种情况

本文档是自己所整理的一份文档,部分是原创,还转贴了网上的一此资料(已经标明了),(难点是多线程的编写),是有源代码的,大家可以作为参考,用到的知 识是视频采集,压缩解压(xvid),实时传输(jrtp...

数据结构(三)——队列及实现、循环队列实现

一、队列     队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称...
  • fansongy
  • fansongy
  • 2011年09月17日 17:03
  • 12804

数组型队列(queue)的使用(支持自定义数据类型)(C++版)

数组型队列(queue)的使用(支持自定义数据类型)C++版 最近用到了数据结构中的queue,标准模板库STL里面的queue是指针型队列,不支持访问队列中的任意元素。故网上找了很多代码,其中 ht...

STL中queue详解

queue queues are a type of container adaptor, specifically designed to operate in a FIFO context (...
  • axiqia
  • axiqia
  • 2016年01月18日 22:01
  • 5076

C++/C++11中std::queue的使用

C++/C++11中std::queue的使用

C++ 队列queue的用法

转自:http://www.169it.com/article/2718050585107790752.html  C++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个...
  • cindywry
  • cindywry
  • 2016年07月15日 16:52
  • 23363
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++队列模板使用std::queue
举报原因:
原因补充:

(最多只允许输入30个字)