队列处理方法、装置、设备及存储介质与流程

专利2026-06-13  1


本公开涉及计算机,尤其涉及一种队列处理方法、装置、设备及存储介质。


背景技术:

1、使用无锁队列进行数据元素的写入和读取,可以使得在多线程的情况下,入队和出队时线程是安全的,不需要再进行加锁控制。使用环形数组实现的无锁队列内存地址连续,时间复杂度为o(1),是一种高效得数据结构,在内存管理,cpu调度,数据传输等方面应用广泛。

2、在很多场景下,由于数据量不稳定,需要对无锁队列进行适当的扩容和缩小,但是用环形数组实现的无锁队列的存储空间大小固定,导致环形数组实际能存储的数据元素个数有限,且不能扩大环形队列的存储空间。如果预先不能准确地估算出环形队列实际应用场景的并发度,在使用基于环形数组实现无锁队列时,配置的队列长度太短,且在无锁队列中存储数据的放入速度大于存储数据的取出速度,会使得通过队列的存储数据的程序出现存储数据入队失败,影响程序的正常响应。配置的队列长度太长,又会导致资源的浪费。


技术实现思路

1、本公开提供了一种队列处理方法、装置、设备及存储介质,在满足扩容需求时,进行扩容,避免多线程下由于申请新的数组造成入队阻塞的问题,在满足缩容需求时,进行缩容,避免资源浪费的问题。

2、第一方面,本公开实施例提供一种队列处理方法,包括:

3、获取第一环形队列的存储状态;

4、在所述第一环形队列的存储状态满足扩容需求时,构建第二环形队列,其中,所述第二环形队列的队列长度大于所述第一环形队列的队列长度;

5、将接收的数据元素存储至所述第二环形队列;

6、在所述第一环形队列的存储状态满足缩容需求时,构建第三环形队列,其中,所述第三环形队列的队列长度小于所述第一环形队列的队列长度;

7、将接收的数据元素存储至所述第三环形队列。

8、第二方面,本公开实施例提供一种队列处理装置,包括:

9、存储状态获取模块,用于获取第一环形队列的存储状态;

10、扩容模块,用于在所述第一环形队列的存储状态满足扩容需求时,构建第二环形队列,其中,所述第二环形队列的队列长度大于所述第一环形队列的队列长度;

11、第一元素存储模块,用于将接收的数据元素存储至所述第二环形队列;

12、缩容模块,用于在所述第一环形队列的存储状态满足缩容需求时,构建第三环形队列,其中,所述第三环形队列的队列长度小于所述第一环形队列的队列长度;

13、第二元素存储模块,用于将接收的数据元素存储至所述第二环形队列或者第三环形队列。

14、第三方面,本公开实施例提供一种电子设备,包括:

15、存储器;

16、处理器;以及

17、计算机程序;

18、其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的队列处理方法。

19、第五方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如第一方面所述的队列处理方法。

20、本公开实施例提供的队列处理方法、装置、设备及存储介质,所述方法包括:获取第一环形队列的存储状态;在所述第一环形队列的存储状态满足扩容需求时,构建第二环形队列,其中,所述第二环形队列的队列长度大于所述第一环形队列的队列长度;将接收的数据元素存储至所述第二环形队列;在所述第一环形队列的存储状态满足缩容需求时,构建第三环形队列,其中,所述第三环形队列的队列长度小于所述第一环形队列的队列长度;将接收的数据元素存储至所述第三环形队列。本公开实施例提供的技术方案在满足扩容需求时,进行扩容。在满足缩容需求时,进行缩容,避免多线程下由于申请新的数组造成入队阻塞的问题,且需要扩容时,不需要增加拷贝过程。重新构建的环形队列内存连续,进而保证无锁队列的内存是连续的。支持多次扩容和缩小,能满足多种需求场景,可以确保环形队列的队列长度合适,不会因为队列长度太短影响取出速度,也不会因队列长度太长浪费资源。



技术特征:

1.一种环形队列处理方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述第二环形队列的队列长度是所述第一环形队列的2倍,所述第三环形队列的队列长度是所述第一环形队列的1/2倍。

3.根据权利要求1所述的方法,其特征在于,所述第一环形队列的存储状态满足扩容需求,包括:

4.根据权利要求3所述的方法,其特征在于,在所述第一环形队列的存储状态满足扩容需求包括:在所述数据元素入队,且所述第一环形队列的存储空间使用率大于预设数值;在所述第一环形队列的存储状态满足扩容需求时,构建第二环形队列,将接收的数据元素存储至所述第二环形队列,包括:

5.根据权利要求1所述的方法,其特征在于,在将接收的数据元素存储至所述第二环形队列之后,所述方法还包括;

6.根据权利要求1所述的方法,其特征在于,所述第一环形队列的存储状态满足缩容需求,包括:

7.根据权利要求1所述的方法,其特征在于,在所述第一环形队列的存储状态满足缩容需求时,构建第三环形队列,包括:

8.根据权利要求6所述的方法,其特征在于,所述方法还包括:

9.一种队列处理装置,其特征在于,包括:

10.一种电子设备,其特征在于,包括:

11.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8中任一项所述的方法。


技术总结
本公开涉及一种队列处理方法、装置、设备及存储介质,所述方法包括:在第一环形队列的存储状态满足扩容需求时,构建第二环形队列,其中,第二环形队列的队列长度大于第一环形队列的队列长度,在第二环形队列开始进行数据元素入队,此时,数据元素出队仍然从第一环队列出队,直至第一环形队列中没有数据元素,将第一环形队列释放;在第一环形队列的存储状态满足缩容需求时,构建第三环形队列,其中,第三环形队列的队列长度小于第一环形队列的队列长度;在第三环形队列开始进行数据元素入队,并将第一环形队列释放。本公开在满足扩容需求时进行扩容,在满足缩容需求时进行缩容,重新构建的环形队列内存连续,保证无锁队列的内存是连续的。

技术研发人员:孙鹏飞
受保护的技术使用者:北京罗克维尔斯科技有限公司
技术研发日:
技术公布日:2024/6/26
转载请注明原文地址:https://doc.8miu.com/read-1830149.html

最新回复(0)