当前位置:  编程技术>c/c++/嵌入式

解析C++无锁队列的实现代码

    来源: 互联网  发布时间:2014-10-14

    本文导语:  本文给出一种C++无锁队列的实现代码,主要用于一个线程读取数据另外一个线程写数据 代码如下:#ifndef LOCK_FREE_QUEUE_H_#define LOCK_FREE_QUEUE_H_//不加锁队列,适合一个线程读取,一个线程写#include template class LockFreeQueue{    public: ...

本文给出一种C++无锁队列的实现代码,主要用于一个线程读取数据另外一个线程写数据
代码如下:

#ifndef LOCK_FREE_QUEUE_H_
#define LOCK_FREE_QUEUE_H_

//不加锁队列,适合一个线程读取,一个线程写
#include
template
class LockFreeQueue
{
    public:
        LockFreeQueue()
        {
             list.push_back(T());//分割节点
             iHead = list.begin();
             iTail = list.end();
        };

       void Produce(const T& t) //存消息
       {
            list.push_back(t);
            iTail = list.end();
            list.erase(list.begin(), iHead);
       };

       bool Consume(T& t) //取消息
       {
            typename TList::iterator iNext = iHead;
            ++iNext;
           if (iNext != iTail)
           {
                iHead = iNext;
                t = *iHead;
                return true;
           }
           return false;
       };

       bool Peek(T& t) //查看消息不删除
       {
            typename TList::iterator iNext = iHead;
            ++iNext;
            if (iNext != iTail)
            {
                t = *iNext;
                return true;
            }
            return false;
       }

       bool IsEmpty()
       {
           typename TList::iterator iNext = iHead;
          ++iNext;
          if (iNext != iTail)
          {
               return false;
          }
          else
          {
               return true;
          }
       }

       int GetMaxSize()
       {
           return list.max_size();
       };

      private:
           typedef std::list TList;
           TList list;
           typename TList::iterator iHead, iTail;
};
#endif


    
 
 

您可能感兴趣的文章:

  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • C++配置文件解析 C++ Configurator
  • C++ 解析器 Cling
  • xerces c++解析中文的问题
  • C++ 的 XML 解析器 slimxml
  • C++ 解析器线程的传播库 libpondyparser
  • C++的JSON解析类 JSONVALUE
  • C++命令行参数解析器 CLPP
  • C++多文件变量解析
  • 如何用C、C++解析HTTP请求报文,包括协议头,字符编码,请高手赐教。谢谢。
  • c++中#include <>与#include""的区别详细解析
  • C++空类默认函数详细解析
  • 解析C++浮点数无效值的定义与无效值判定的小结
  • linux 系统下c++ 用expat解析xml文件
  • C++标准库中sstream与strstream的区别详细解析
  • C与C++ 无参函数的区别解析
  • C++中overload,override,overwrite的区别详细解析
  • 解析使用C++编写无错代码的方法技巧
  • 解析C++ 浮点数的格式化显示
  • C++实现判断字符串是否回文实例解析
  • 解析c++中的默认operator=操作的详解
  • 解析如何用两个栈来实现队列的方法
  • C++中队列的建立与操作详细解析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Java 的解析器代码生成器 AustenX
  • python下xml解析库lxml最新版下载安装以及代码示例
  • 怎样看到java程序经过编译后的代码内容(bytecode的)或者在bytecode在JVM执行时JVM所解析的代码
  • jquery代码-如何使用jQuery来解析xml
  • 神阿,救救我吧!谁有关于MINIX源代码的详细解析?
  • Java代码解析工具 JavaFE
  • 在做FTP服务端,请问哪位有解析LIST命令的C语言代码?
  • 下载网站图片代码并且解析乱码
  • 请教:LINUX下有没有能象source insight那样解析并阅读代码的工具?解决问题50分相送!
  • 一个不易被发现的PHP后门代码解析
  • js正则解析URL参数示例代码
  • 解析:清除SQL被注入恶意病毒代码的语句
  • 解析c#显示友好时间的实现代码
  • 解析C#彩色图像灰度化算法的实现代码详解
  • php解析nginx日志的实例代码
  • jquery解析JSON数据示例代码
  • android4.0与2.3版本的TP代码区别解析
  • java dom4j解析xml文件代码实例分享
  • 解析shell排序的实现代码
  • 解析美国东部时间与北京时间相互转换的实现代码
  • 基于Python的Html/xml解析库Beautiful Soup 4.2.1发布
  • 请教redhat9下什么命令执行arp解析和逆向arp解析
  • html中<radio>单选按钮控件标签用法解析及如何设置默认选中
  • 如何用libxml2 默认解析器解析HTML文件
  • Python下Html/xml解析库Beautiful Soup快速入门教程
  • linux能否成为动态域名解析客户端的动态域名解析服务器?
  • 基于Python的html解析库:pyquery最新版主页及pyquery下载
  • 配置DNS服务器后,服务器可解析,客户端不能解析。求解
  • python对XML的解析方法(SAX,DOM,ElementTree)介绍
  • 为什么我在使用nslookup命令的时候,正向解析(域名-》ip)没有问题,反向解析(ip-》域名)怎么查不到呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3