一种基于缓存队列的数据处理方法与相关装置制造方法及图纸

技术编号:38152962 阅读:11 留言:0更新日期:2023-07-13 09:18
本申请提供了一种基于缓存队列的数据处理方法与相关装置,涉及数据处理技术领域。首先构建环形缓存队列;其中,环形缓存队列设置有头部指针与尾部指针,头部指针指向生产者下一个可写入的元素位置,尾部指针指向消费者最大可读取元素位置,并且当生产者线程写入数据时,获取头部指针指向的元素,且头部指针加1,并在完成数据写入后,尾部指针加1;当消费者线程读取数据时,保存自身最小待读取位,并在读取数据后,更新自身最小待读取位。本申请提供的基于缓存队列的数据处理方法与相关装置具有充分利用硬件资源且提升数据处理效率的优点。点。点。

【技术实现步骤摘要】
一种基于缓存队列的数据处理方法与相关装置


[0001]本申请涉及数据处理
,具体而言,涉及一种基于缓存队列的数据处理方法与相关装置。

技术介绍

[0002]数据/消息的处理效率是评判一个应用系统架构优劣的核心指标。业界的数据处理系统,其通用的设计思想是:使用多线程技术对多个数据进行异步处理,使用阻塞队列构造缓冲池,供生产者(数据生成方)与消费者(数据处理方)存放交互数据,同时利用锁机制保障缓冲池中数据的一致性。
[0003]然而,加锁通常会严重影响性能:线程会因为竞争不到锁而被挂起,等锁被释放的时候,线程又会被恢复,这个过程中存在较长时间的中断,因为当一个线程正在等待锁时,它不能做任何其他事情。如果一个线程在持有锁的情况下被延迟执行,例如发生了缺页错误、调度延迟或者其它类似情况,那么所有需要这个锁的线程都无法执行下去,十分影响性能。如果被阻塞线程的优先级较高,而持有锁的线程优先级较低,就会发生优先级反转。
[0004]综上,现有技术中存在锁机制导致的性能损耗、数据处理效率较低的问题。

技术实现思路

[0005]本申请的目的在于提供一种基于缓存队列的数据处理方法与相关装置,以解决现有技术中存在的锁机制导致的性能损耗、数据处理效率较低的问题。
[0006]为了实现上述目的,本申请实施例采用的技术方案如下:
[0007]第一方面,本申请实施例提供了一种基于缓存队列的数据处理方法,所述方法包括:
[0008]构建环形缓存队列;其中,所述环形缓存队列设置有头部指针与尾部指针,所述头部指针指向生产者下一个可写入的元素位置,所述尾部指针指向消费者最大可读取元素位置;
[0009]当生产者线程写入数据时,获取头部指针指向的元素,且头部指针加1,并在完成数据写入后,所述尾部指针加1;
[0010]当消费者线程读取数据时,保存自身最小待读取位,并在读取数据后,更新自身最小待读取位。
[0011]可选地,构建环形缓存队列的步骤包括:
[0012]当处于初始状态时,所述头部指针等于1,所述尾部指针等于0。
[0013]可选地,在生产者线程写入数据后,所述方法还包括:
[0014]当所述环形缓存队列的元素位置全部写满,且生产者线程写入数据时,对写入的元素位置进行数据覆盖。
[0015]可选地,当生产者线程写入数据时,获取头部指针指向的元素,且头部指针加1,并在完成数据写入后,所述尾部指针加1的步骤包括:
[0016]当完成数据写入后,若写入的元素位置小于或等于尾部指针的位置时,重新获取头部指针位置。
[0017]可选地,若写入的元素位置小于或等于尾部指针的位置时,重新获取头部指针位置的步骤包括:
[0018]生产者线程自旋,并等待尾部指针改变。
[0019]可选地,构建环形缓存队列的步骤包括:
[0020]构建长度大于或等于16的建环形缓存队列。
[0021]可选地,当消费者线程读取数据时,保存自身最小待读取位,并在读取数据后,更新自身最小待读取位的步骤包括:
[0022]批量读取自身最小待读取位与尾部指针之间的数据。
[0023]第二方面,本申请实施例还提供了一种基于缓存队列的数据处理装置,其特征在于,所述装置包括:
[0024]构建单元,用于构建环形缓存队列;其中,所述环形缓存队列设置有头部指针与尾部指针,所述头部指针指向生产者下一个可写入的元素位置,所述尾部指针指向消费者最大可读取元素位置;
[0025]处理单元,用于当生产者线程写入数据时,获取头部指针指向的元素,且头部指针加1,并在完成数据写入后,所述尾部指针加1;
[0026]处理单元,还用于当消费者线程读取数据时,保存自身最小待读取位,并在读取数据后,更新自身最小待读取位。
[0027]第三方面,本申请实施例还提供了一种电子设备,包括:
[0028]存储器,用于存储一个或多个程序;
[0029]处理器;
[0030]当所述一个或多个程序被所述处理器执行时,实现如权利要求1

7中任一项所述的方法。
[0031]第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的方法。
[0032]相对于现有技术,本申请具有以下有益效果:
[0033]本申请提供了一种基于缓存队列的数据处理方法与相关装置,构建环形缓存队列;其中,环形缓存队列设置有头部指针与尾部指针,头部指针指向生产者下一个可写入的元素位置,尾部指针指向消费者最大可读取元素位置,并且当生产者线程写入数据时,获取头部指针指向的元素,且头部指针加1,并在完成数据写入后,尾部指针加1;当消费者线程读取数据时,保存自身最小待读取位,并在读取数据后,更新自身最小待读取位。由于本申请采用环形缓冲队列的方式,减少多线程在某一位置的资源争抢,利用读写分离技术,使消费者不断追逐生产者,减少指针碰撞次数并充分利用硬件资源,进而提升数据处理效率。
[0034]为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
[0035]为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附
图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
[0036]图1为本申请实施例提供的电子设备的模块示意图;
[0037]图2为本申请实施例提供的基于缓存队列的数据处理方法的示例性流程图;
[0038]图3为本申请实施例提供环形缓存队列的第一种示意图;
[0039]图4为本申请实施例提供环形缓存队列的第二种示意图;
[0040]图5为本申请实施例提供环形缓存队列的第三种示意图;
[0041]图6为本申请实施例提供的基于缓存队列的数据处理装置的模块示意图。
[0042]图中:100

电子设备;101

处理器;102

存储器;103

通信接口;200

基于缓存队列的数据处理装置;210

构建单元;220

处理单元。
具体实施方式
[0043]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
[0044]因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于缓存队列的数据处理方法,其特征在于,所述方法包括:构建环形缓存队列;其中,所述环形缓存队列设置有头部指针与尾部指针,所述头部指针指向生产者下一个可写入的元素位置,所述尾部指针指向消费者最大可读取元素位置;当生产者线程写入数据时,获取头部指针指向的元素,且头部指针加1,并在完成数据写入后,所述尾部指针加1;当消费者线程读取数据时,保存自身最小待读取位,并在读取数据后,更新自身最小待读取位。2.如权利要求1所述的基于缓存队列的数据处理方法,其特征在于,构建环形缓存队列的步骤包括:当处于初始状态时,所述头部指针等于1,所述尾部指针等于0。3.如权利要求1所述的基于缓存队列的数据处理方法,其特征在于,在生产者线程写入数据后,所述方法还包括:当所述环形缓存队列的元素位置全部写满,且生产者线程写入数据时,对写入的元素位置进行数据覆盖。4.如权利要求1所述的基于缓存队列的数据处理方法,其特征在于,当生产者线程写入数据时,获取头部指针指向的元素,且头部指针加1,并在完成数据写入后,所述尾部指针加1的步骤包括:当完成数据写入后,若写入的元素位置小于或等于尾部指针的位置时,重新获取头部指针位置。5.如权利要求4所述的基于缓存队列的数据处理方法,其特征在于,若写入的元素位置小于或等于尾部指针的位置时,重新获取头部指针位置的步骤包括:生产者线程自旋,并等待...

【专利技术属性】
技术研发人员:张洋程鹏鹏李甜梦霍旭晖
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1