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 ...
随机推荐
- 【原】react+redux实战
摘要:因为最近搞懂了redux的异步操作,所以觉得可以用react+redux来做一个小小的项目了,以此来加深一下印象.切记,是小小的项目,所以项目肯定是比较简单的啦,哈哈. 项目效果图如图所示:(因 ...
- Linux环境下发布项目(Tomcat重新启动)
在Linux系统下,重启Tomcat 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看Tomcat是否 ...
- 任务二:1、选择器 2、连接集中状态的顺序 3、浮动的用发和原理 4、盒模型在IE和Google等不同浏览器的区别与联系
1.选择器类型 标签选择器,类选择器,ID选择器,组合选择器,伪类和伪元素,属性选择器,子选择器,同胞选择器, :not()选择器 1.同胞选择器 相邻同胞标签: h2 + p{ color:red; ...
- Lambda表达式 和 Expression<T>
经常用的Lambda表达式 返回的是 Expression<T> 格式 public class ActivityService { private readonly List<A ...
- IIS------配置错误:不能在此路径中使用此配置节
转载: http://wenda.so.com/q/1414673956725716 因为 IIS 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改.运行命令行 %wi ...
- ORACLE函数大全
SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ...
- cpg数据库处理_找到未提取的pdf
cpg数据库处理_找到未提取的pdf,存放于文件夹Chinese_undeal_pdfs move_unextracted_pdfs.py # -*- coding: utf-8 -*- " ...
- 用jackson封装的JSON工具类
package hjp.smart4j.framework.util; import com.fasterxml.jackson.databind.ObjectMapper; import org.s ...
- 9月22日下午JavaScript----Document对象
document对象 一.找元素 1.根据id找 示例: <input id = "a" type="button" value="找元素&qu ...
- JavaScript学习笔记——流程控制
javascript流程控制流程:就是程序代码的执行顺序.流程控制:通过规定的语句让程序代码有条件的按照一定的方式执行. 一.顺序结构 按照书写顺序来执行,是程序中最基本的流程结构. 二.选择结构(分 ...