队列控制方法、装置、电子设备和存储介质制造方法及图纸

技术编号:38015785 阅读:31 留言:0更新日期:2023-06-30 10:40
本公开涉及一种队列控制方法、装置、电子设备和存储介质,涉及数据库技术领域。其中的方法包括:在生产者入队目标元素时,根据生产者头指针、消费者尾指针以及队列的长度,确定本地生产者头指针以及本地消费者尾指针;根据本地生产者头指针和本地消费者尾指针,确定队列的初始逻辑空闲空间;响应于确定初始逻辑空闲空间大于或等于目标元素的占用空间,确定本地生产者头指针与队列的尾部之间的物理空闲空间是否大于或等于占用空间;响应于确定物理空闲空间小于占用空间,填充物理空闲空间并确定队列的更新逻辑空闲空间;将目标元素写入更新逻辑空闲空间。应用本公开支持多生产者和多消费者对队列进行不定长元素的写入和输出,提高了数据传输效率。高了数据传输效率。高了数据传输效率。

【技术实现步骤摘要】
队列控制方法、装置、电子设备和存储介质


[0001]本申请涉及计算机
,具体一种队列控制方法、装置、电子设备和存储介质。

技术介绍

[0002]队列是所有软件工程及项目中必定涉及的内容,队列是一种经典的数据结构,也是数据传送的核心方法之一。以linux内核的kfifo和DPDK的ring为代表的无锁队列,都是要求队列元素为固定长度。以管道和socket为代表的操作系统组件虽然不要求元素为固定长度,但每次调用需要执行一次系统调用,导致其在性能上低于无锁队列至少一个数量级。
[0003]因此,本公开旨在解决当前的队列数据传送效率低下的问题。

技术实现思路

[0004]本公开的实施例提供了一种队列控制方法、装置、电子设备和存储介质。
[0005]第一方面,本公开的实施例提供了一种队列控制方法,包括:在生产者入队目标元素时,根据生产者头指针、消费者尾指针以及队列的长度,确定本地生产者头指针以及本地消费者尾指针;根据本地生产者头指针和本地消费者尾指针,确定队列的初始逻辑空闲空间;响应于确定初始逻辑空闲空间大于或等于目标元素的占用空间,确定本地生产者头指针与队列的尾部之间的物理空闲空间是否大于或等于占用空间;响应于确定物理空闲空间小于占用空间,填充物理空闲空间并确定队列的更新逻辑空闲空间;将目标元素写入更新逻辑空闲空间。
[0006]第二方面,本公开的实施例提供了一种队列控制装置,包括:指针确定单元,被配置成在生产者入队目标元素时,根据生产者头指针、消费者尾指针以及队列的长度,确定本地生产者头指针以及本地消费者尾指针;空间确定单元,被配置成根据本地生产者头指针和本地消费者尾指针,确定队列的初始逻辑空闲空间;判断单元,被配置成响应于确定初始逻辑空闲空间大于或等于目标元素的占用空间,确定本地生产者头指针与队列的尾部之间的物理空闲空间是否大于或等于占用空间;空间填充单元,被配置成响应于确定物理空闲空间小于占用空间,填充物理空闲空间并确定队列的更新逻辑空闲空间;元素入队单元,被配置成将目标元素写入更新逻辑空闲空间。
[0007]第三方面,本公开的实施例提供了一种电子设备,包括存储器、处理器、总线及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所描述的队列控制方法。
[0008]第四方面,本公开的实施例提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所描述的队列控制方法。
[0009]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0010]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0011]图1为本公开的队列控制方法的一个实施例的流程示意图;
[0012]图2为本公开的队列控制方法的另一个实施例的的流程示意图;
[0013]图3为本公开的队列控制方法的又一个实施例的的流程示意图;
[0014]图4为本公开的队列控制装置的一个实施例的结构示意图;
[0015]图5为本公开的电子设备的一个实施例的结构示意图。
具体实施方式
[0016]应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。除非另有指明,本文中使用的所有技术和科学术语具有与本公开所属
的普通技术人员通常理解的相同含义。
[0017]需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0018]在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
[0019]为使本公开的技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本公开作进一步详细的说明。
[0020]图1示出了本公开的队列控制方法的一个实施例的流程100。如图1所示,本实施例的队列控制方法可以包括以下步骤:
[0021]步骤101,在生产者入队目标元素时,根据生产者头指针、消费者尾指针以及队列的长度,确定本地生产者头指针以及本地消费者尾指针。
[0022]本实施例中,队列控制方法可以包括生产者入队的情况和消费者出队的情况。在生产者入队目标元素的情况下,执行主体可以根据生产者头指针、生产者尾指针以及队列的长度(SIZE),确定本地生产者头指针以及本地消费者尾指针。具体的,目标元素可以是待写入队列的元素,其可以包括元素头和元素体。元素头中可以包括元素体的长度,元素体中可以包括具体内容。
[0023]生产者头指针(PROD_HEAD)指向当前可用的生产者位置,生产者尾指针(PROD_TAIL)指向未提交的生产者位置,消费者头指针(CONS_HEAD)指向当前可用的消费者位置,消费者尾指针(CONS_TAIL)指向未提交的消费者位置。当没有生产者执行入队操作时,PROD_HEAD和PROD_TAIL指向相同位置。生产者读取PROD_HEAD和CONS_TAIL到本地计数器,即本地生产者头指针(LOCAL_PROD_HEAD)以及本地消费者尾指针(LOCAL_CONS_TAIL)。
[0024]步骤102,根据本地生产者头指针和本地消费者尾指针,确定队列的初始逻辑空闲空间。
[0025]这里,记队列初始逻辑空闲空间为FREE,则满足如下约束:队列的长度SIZE=本地生产者头指针

本地消费者尾指针+初始逻辑空闲空间。即
[0026]SIZE==LOCAL_PROD_HEAD

LOCAL_CONS_TAIL+FREE。
[0027]其中,LOCAL_PROD_HEAD

LOCAL_CONS_TAIL表示队列的已使用空间。
[0028]则有如下公式变形:
[0029]FREE=LOCAL_CONS_TAIL+SIZE

LOCAL_PROD_HEAD。
[0030]步骤103,响应于确定初始逻辑空闲空间大于或等于目标元素的占用空间,确定本地生产者头指针与队列的尾部之间的物理空闲空间是否大于或等于占用空间。
[0031]目标元素入队需要的占用空间为元素头与元素体的和,即ELEM_SIZE=ELEM_HEADSIZE+ELEM_BODYSIZE。其中,ELEM_HEADSIZE为元素头,ELEM_BODYSIZE为元素体。如果FREE>=ELEM_HEADSIZE+ELEM_BODYSIZE,则可以认定初始逻辑空闲空间大于或等于目标元素的占用空间。则可以进一步确认目标元素是否会溢出队列。所谓溢出队列,即虽然逻辑空间满足入队需本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种队列控制方法,包括:在生产者入队目标元素时,根据生产者头指针、消费者尾指针以及队列的长度,确定本地生产者头指针以及本地消费者尾指针;根据所述本地生产者头指针和所述本地消费者尾指针,确定所述队列的初始逻辑空闲空间;响应于确定所述初始逻辑空闲空间大于或等于所述目标元素的占用空间,确定所述本地生产者头指针与所述队列的尾部之间的物理空闲空间是否大于或等于所述占用空间;响应于确定所述物理空闲空间小于所述占用空间,填充所述物理空闲空间并确定所述队列的更新逻辑空闲空间;将所述目标元素写入所述更新逻辑空闲空间。2.根据权利要求1所述的方法,其中,所述将所述目标元素写入所述更新逻辑空闲空间,包括:确定所述更新逻辑空闲空间是否大于或等于所述占用空间;响应于确定所述更新逻辑空闲空间大于或等于所述占用空间,将所述目标元素自所述队列的头部写入所述更新逻辑空闲空间。3.根据权利要求1所述的方法,其中,所述填充所述物理空闲空间,包括:响应于确定所述物理空闲空间小于所述占用空间,根据所述物理空闲空间,生成占位元素;将所述占位元素写入所述物理空闲空间。4.根据权利要求3所述的方法,其中,所述占位元素包括元素头和元素体;以及所述根据所述物理空闲空间,生成占位元素,包括:将所述物理空闲空间的长度作为所述元素体的长度;将所述元素体的长度写入所述占位元素的元素头。5.根据权利要求3~4任一项所述的方法,其中,所述方法还包括:响应于确定所述物理空闲空间大于或等于所述占用空间,根据所述本地生产者头指针确定所述目标元素的写入位置;将所述目标元素自所述写入位置处写入所述物理空闲空间。6.根据权利要求2所述的方法,其中,所述方法还包括:响应于确定所述初始逻辑空闲空间或者所述更新逻辑空闲空间小于所述占用空间,输出入队失败消...

【专利技术属性】
技术研发人员:刘靖非严俊
申请(专利权)人:北京百卓网络技术有限公司
类型:发明
国别省市:

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

1