• 双缓存静态循环队列(一)


    一、在数据采集通讯处理场景中应用中,数据收发缓存使用很多。常用的是生产者/消费者模式数据缓存。

    基于几点考虑实现该数据缓存队列(FIFO)模块。

    1) 内存管理:固定内存大小分配,不使用动态分配。

    2) 存取速度:用数组通过游标计算实现循环队列,无数据拷贝移动等开销实现数据插入移除的快速实现。

    3) 线程可重入:使用关键字段临界锁

    4) 读写锁冲突处理:使用双缓存结构,减小临界锁粒度,降低读写锁的冲突访问。对于读写频繁的操作可显著提高读写性能

    5) 应用模式:FIFO数据队列

    6) 无锁算法:常用的 CAS无锁算法,本质上也只是降低了锁的粒度,同时其有的复杂性,很难进行扩充和修改。

        从业务角度找到合适的方法和数据设计,不使用普适的无锁算法。

    二、类定义以及文件说明

    类: CCritcalS

    文件:CritcalS.h   CritcalS.cpp

    说明:自定义临界锁,禁止重复加锁

    类:CBufQueue

    文件:BufQueue.h   BufQueue.cpp

    说明:静态FIFO循环队列实现

    类:CTwoBufQueue

    文件:TwoBufQueue.h   TwoBufQueue.cpp

    说明:双缓存队列。减少读写操作的互斥冲突,类乒乓寻存储原理

  • 相关阅读:
    WindowsServer2003SP2EnterpriseEdition激活码
    2016/12/14渗透学习总结
    技术之路注定孤独
    几道office题的总结
    一路走来,只是清风
    【IIS】IIS中同时满足集成模式和经典模式
    IntelliJ IDEA如何build path
    kafka的集群安装
    尚硅谷 kafka
    队列
  • 原文地址:https://www.cnblogs.com/Esperanto/p/5353960.html
Copyright © 2020-2023  润新知