首页 > 其他分享 >环形队列

环形队列

时间:2024-04-26 19:22:26浏览次数:21  
标签:队列 写入 环形 buffer 缓冲区 数据

【简介】

ring buffer / circular buffer 又名环形队列 / 环形缓冲区,其通过开辟固定尺寸的内存来实现反复复用同一块内存的目的。由于预先开辟了固定尺寸的内容,所以当数据满的时候,可以有两种处理方式,具体使用哪一种按照实际需求,具体如下:

1)当队列满的时候,新来的数据会覆盖最古老的数据,这种数据结构的特点是数据的写入不会因为队列满了而停止,同时也会导致旧数据的丢失,常用在一些对老旧数据不敏感的场景。如果数据很重要且不希望被丢弃,那么不要使用这种覆盖的模式,比如 流媒体场景下,每一帧数据都要确保完整地被渲染出来,不然会出现跳帧和音画同步无法完成等问题,所以不适合这种模式。

2)当数据满的时候,block 或者禁止写入操作,直到队列有空间时再允许写入。这种模式下可以保证数据不被覆盖掉。

 

【实现】

boost库直接有现成的,参考 VS2015编译并配置boost 64位 - 夕西行 - 博客园 (cnblogs.com)

也可以自己实现,思路参考:

 [common c/c++] ring buffer/circular buffer 环形队列/环形缓冲区_c++ ringbuffer-CSDN博客

多线程环形缓冲区 - IAmAProgrammer - 博客园 (cnblogs.com)

标签:队列,写入,环形,buffer,缓冲区,数据
From: https://www.cnblogs.com/xixixing/p/18160728

相关文章

  • 循环队列的程序接口
    循环队列的程序接口目录循环队列的程序接口队列的说明队列循环队列入队、出队头文件创建队空、队满的判断入队出队验证队列的说明队列循环队列入队、出队头文件/********************************************************************* filename: 循环队列的接口......
  • 单调队列优化DP
    单调队列优化dp单调队列可以求某固定区间的最值,所以dp中需要求某固定区间的最值则可以考虑使用单调队列优化单调队列-滑动窗口https://www.luogu.com.cn/problem/P1886/**@Author:Danc1ng*@Date:2024-04-2416:06:34*@FilePath:P1886滑动窗口[模......
  • Java ---- 阻塞队列 Blocking Queue
    阻塞队列(BlockingQueue)是一种特殊类型的队列,用于多线程环境中,实现进程通信;常见的Java阻塞队列包括:(1)ArrayBlockingQueue(有界队列)内部是采用数组存储元素的,初始化需要指定容器大小,ArrayBlockingQueue可以用于实现数据缓存、限流、生产者-消费者模式等各种应用。在队列的......
  • CIRCLEQ_INSERT_AFTER, C语言循环队列
     CMakeLists.txt#CMakeList.txt:CMakeprojectforllist,includesourceanddefine#projectspecificlogichere.#cmake_minimum_required(VERSION3.2)#Addsourcetothisproject'sexecutable.add_executable(poj2823"main.c""......
  • 为什么使用消息队列
    消息队列的基本作用解耦异步削峰引入消息队列会导致什么1.降低系统的可用性:系统引入的外部依赖越多,越容易挂掉2.系统的复杂度变高:使用MQ后可能需要保证消息没有被重复消费、处理消息丢失的情况、保证消息传递的顺序性等等问题3.一致性问题:A系统处理完了直接返回成功......
  • JZ9 用两个栈实现队列
    classSolution{public://用两个栈实现队列栈是先进后出,队列是先进先出//在队列尾部插入整数voidpush(intnode){//入队就正常入栈stack1.push(node);}//在队列头部删除整数,先进先出intpop(){//将第一个栈中......
  • 风险控制 1、如果你的项目发布后失败,主要的原因会是什么? 2、每个团队列出自己项目中
    项目发布失败的主要原因会是:-需求管理不当:项目未能准确捕捉或满足用户需求。资源分配不当:团队可能缺乏必要的技能或资源来完成项目。时间管理问题:项目可能未能在预定时间内完成。沟通不畅:团队成员之间、团队与利益相关者之间的沟通可能存在问题。技术问题:项目可能遇到无法......
  • 团队练习2:风险控制 1、如果你的项目发布后失败,主要的原因会是什么? 2、每个团队列出自
    学生信息管理系统项目发布后失败的主要原因可能包括:需求分析不准确或不完整,导致系统功能与用户需求不符。技术实现存在问题,如性能低下、安全性不足等。项目管理不善,如进度延误、资源分配不合理等。用户界面设计不佳,导致用户体验差。市场推广不足,用户接受度低。项目中目前面......
  • 团队练习2:风险控制1、如果你的项目发布后失败,主要的原因会是什么?2、每个团队列出自己
    团队练习2:风险控制1、如果你的项目发布后失败,主要的原因会是什么?2、每个团队列出自己项目中目前面临的风险,按严重性排序(例如:团队中有人原来许诺要努力工作,但是后来做了南郭先生,这是一个风险)同时列出每条风险的应对方法;3、针对问题1,你们小组如果出现风险,导致项目发布失败,给出应......
  • 【专题STM32F03】FreeRTOS 队列queue传递结构体,野火例程代码简单修改。
    /************************************************************************@filemain.c*@authorfire*@versionV1.0*@date2018-xx-xx*@briefFreeRTOSV9.0.0+STM32消息队列******************************************************......