C++之通用队列模版
功能:在qtcreator上用模版的方式实现队列数据格式存储多样化。
模版实现的两种方式:
1、模版的实现直接在头文件里声明并定义,别的类通过#include"*.h"进行包含,则可以实现调用该类并实例化。
2、可以在cpp文件里直接定义模版的具体功能,别的类需要调用该类时,只能通过#include"*.cpp"文件, 如果以#include "*.h"方式,则会出错。
- #ifndef TEMPLATERQUEUE_H
- #define TEMPLATERQUEUE_H
- #include <QQueue>
- #include <QMutex>
- #include <QMutexLocker>
- template<class T>
- class TemplateRQueue
- {
- public:
- TemplateRQueue();
- bool setQueueData(const T tmp);
- bool getQueueData(T *tmp);
- int getQueueLength();
- bool clearQueue();
- private:
- QQueue<T> *m_pRQueueData;
- bool lockFlag;
- QMutex m_mutex;
- };
- template<class T>
- TemplateRQueue<T>::TemplateRQueue()
- {
- m_pRQueueData = new QQueue<T>;
- lockFlag = false;
- }
- template<class T>
- bool TemplateRQueue<T>::setQueueData(const T tmp)
- {
- QMutexLocker locker(&m_mutex);
- if(lockFlag == true)
- return false;
- else
- {
- lockFlag = true;
- m_pRQueueData->enqueue(tmp);
- lockFlag = false;
- return true;
- }
- }
- template<class T>
- bool TemplateRQueue<T>::getQueueData(T *tmp)
- {
- QMutexLocker locker(&m_mutex);
- if(lockFlag == true)
- return false;
- else
- {
- lockFlag = true;
- if(m_pRQueueData->isEmpty())
- {
- lockFlag = false;
- return false;
- }
- else
- {
- *tmp = m_pRQueueData->dequeue();
- lockFlag = false;
- return true;
- }
- }
- }
- template<class T>
- int TemplateRQueue<T>::getQueueLength()
- {
- QMutexLocker locker(&m_mutex);
- if(lockFlag == true)
- return false;
- else
- {
- return m_pRQueueData->length();
- }
- }
- template<class T>
- bool TemplateRQueue<T>::clearQueue()
- {
- QMutexLocker locker(&m_mutex);
- if(lockFlag == true)
- return false;
- else
- {
- m_pRQueueData->clear();
- return true;
- }
- }
- #endif // TEMPLATERQUEUE_H
C++之通用队列模版的更多相关文章
- Linux内核通用队列的使用笔记(读linux内核设计与实现)
Linux内核通用队列实现 Kfifo位置:kernel/kififo.c 使用需要包含头文件#include <kernel/kififo> 1.创建队列(动态创建)int kfifo_ ...
- 【freemaker】之自定义指令通用select模版
测试代码 @Test public void test08(){ List<Group> groups=Arrays.asList(new Group(1,"山口组") ...
- 浏览器插件 - 通用注入模版JS
//TIP:先通过Tampermonkey编写为可用脚本,再套用此通用模版,再拖到Chrome安装为扩展即可. /* 通用注入原型3:*/ switch (window.location.pathna ...
- hdu 2604 Queuing(动态规划—>矩阵快速幂,更通用的模版)
题目 最早不会写,看了网上的分析,然后终于想明白了矩阵是怎么出来的了,哈哈哈哈. 因为边上的项目排列顺序不一样,所以写出来的矩阵形式也可能不一样,但是都是可以的 //愚钝的我不会写这题,然后百度了,照 ...
- 省事之通用Makefile模版
现在编译方案都偏爱使用cmake解决问题,这两条做unity插件,还是用Makefile,居然忘得光光,好记性不如烂笔头. 后面,翻箱倒柜找到以前为炼金术写的Makefiel,发现还真是挺好用,贴出来 ...
- yii2-更改默认显示的通用主页
在views/layouts/目录下新建一个login.php,然后SiteController中更新下面的方法 public function actionIndex() { $this->l ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- [js高手之路]javascript腾讯面试题学习封装一个简易的异步队列
这道js的面试题,是这样的,页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ),首先我们用闭包 ...
- Erlang运行时中的无锁队列及其在异步线程中的应用
本文首先介绍 Erlang 运行时中需要使用无锁队列的场合,然后介绍无锁队列的基本原理及会遇到的问题,接下来介绍 Erlang 运行时中如何通过“线程进度”机制解决无锁队列的问题,并介绍 Erlang ...
随机推荐
- 在linux下安装tesseract-ocr
1. 在ubuntu下可以自动安装 [html] 技术分享技术分享 sudo apt-get install tesseract-ocr 2.编译安装 a.编译环境: gcc gc ...
- hihoCoder1284机会渺茫(唯一分解定理 + 约分)
题目链接 #1284 : 机会渺茫 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在追求一名学数学的女生小Z.小Z其实是想拒绝他的,但是找不到好的说辞,于是提出 ...
- Saltstack 介绍、安装、配置(一)
Slatstack 介绍 官网:https://saltstack.com/ 官方源:http://repo.saltstack.com/ (介绍各操作系统安装方法) http://repo.sal ...
- ASP------如何读取文件内容
<body> @{ var dataFile = Server.MapPath("~/App_Data/Persons.txt"); Array list = File ...
- jquery serialize()方法可以序列化表单值为字符串
<form> <div><input type="text" name="a" value="1" id=&q ...
- JavaWeb学习笔记——JSTL核心标签库
- docker快速搭建wordpress(centos7)
docker pull tutum/wordpress #拉取镜像 docker run -d -p 80:80 tutum/wordpress #运行容器 使用服务器IP访问即可
- Ankh不起作用的解决方法
请检查Visual Studio 2008的Tool > Options... > Source Control,在下拉菜单中选择插件.
- Robot Framework--08 List Variables-List变量及其用法
转自:http://blog.csdn.net/tulituqi/article/details/7907981 一.List变量及其用法 在我们前面几篇文章里用到了很多List变量,相信以后各位也会 ...
- yii2 小技巧
参考地址:http://www.cnblogs.com/sandea/p/5714830.html 1.不通过日志获取AR执行的原生SQL语句和打印变量数据 $query = User::find() ...