一种无锁队列优化方法、装置、设备及可读存储介质制造方法及图纸

技术编号:35191369 阅读:20 留言:0更新日期:2022-10-12 18:11
本发明专利技术提供了一种无锁队列优化方法、装置、设备及可读存储介质,所述方法包括获取队列、第一信息和生产者生产的队列数据,第一信息包括队列的生产者头指针、队列的生产者尾指针和队列的消费者尾指针;将生产者生产的队列数据的一个比特作为完成位,并将完成位设置为0;根据队列的生产者头指针、队列的消费者尾指针将生产者生产的队列数据拷贝至队列,并将拷贝至队列后的的队列数据的完成位设置为1;检测队列当前生产者尾指针指向的的队列数据的完成位是否为1,得到第一检测结果;根据第一检测结果判断生产者生产的队列数据是否完成入队操作,本发明专利技术通过对完成位操作实现对生产者尾指针/消费者尾指针的提交,解决了提交阶段的数据竞争。的数据竞争。的数据竞争。

【技术实现步骤摘要】
一种无锁队列优化方法、装置、设备及可读存储介质


[0001]本专利技术涉及数据处理领域,具体而言,涉及一种无锁队列优化方法、装置、设备及可读存储介质。

技术介绍

[0002]在现有的数据处理领域中,一般存在4种无锁队列:单生产者单消费者队列、多生产者单消费者队列、单生产者多消费者、队列多生产者多消费者队列,当存在多个生产者或多个消费者同时对队列进行访问时,在提交阶段存在数据竞争,会导致队列总体性能随着生产者/消费者数量增多而下降,因此需要一种优化方法来解决在提交阶段存在数据竞争的问题。

技术实现思路

[0003]本专利技术的目的在于提供一种无锁队列优化方法、装置、设备及可读存储介质,以改善上述问题。
[0004]为了实现上述目的,本申请实施例提供了如下技术方案:
[0005]一方面,本申请实施例提供了一种无锁队列优化方法,所述方法包括:
[0006]获取队列、第一信息和生产者生产的队列数据,所述第一信息包括队列的生产者头指针、队列的生产者尾指针和队列的消费者尾指针;
[0007]将所述生产者生产的队列数据的一个比特作为完成位,并将所述完成位设置为0;
[0008]根据所述队列的生产者头指针、所述队列的消费者尾指针将所述生产者生产的队列数据拷贝至所述队列,并将拷贝至所述队列后的所述生产者生产的队列数据的完成位设置为1;
[0009]检测所述队列当前生产者尾指针指向的所述生产者生产的队列数据的完成位是否为1,得到第一检测结果;
[0010]根据所述第一检测结果判断所述队列当前生产者尾指针指向的生产者生产的队列数据是否完成入队操作,并将指向当前完成入队操作的所述生产者生产的队列数据的生产者尾指针加1,再对下一个所述生产者生产的队列数据进行入队操作。
[0011]第二方面,本申请实施例提供了一种无锁队列优化装置,所述装置包括:
[0012]第一获取模块,用于获取队列、第一信息和生产者生产的队列数据,所述第一信息包括队列的生产者头指针、队列的生产者尾指针和队列的消费者尾指针;
[0013]第一执行模块,用于将所述生产者生产的队列数据的一个比特作为完成位,并将所述完成位设置为0;
[0014]第二执行模块,用于根据所述队列的生产者头指针、所述队列的消费者尾指针将所述生产者生产的队列数据拷贝至所述队列,并将拷贝至所述队列后的所述生产者生产的队列数据的完成位设置为1;
[0015]第一检测模块,用于检测所述队列当前生产者尾指针指向的所述生产者生产的队
列数据的完成位是否为1,得到第一检测结果;
[0016]第一判断模块,用于根据所述第一检测结果判断所述队列当前生产者尾指针指向的生产者生产的队列数据是否完成入队操作,并将指向当前完成入队操作的所述生产者生产的队列数据的生产者尾指针加1,再对下一个所述生产者生产的队列数据进行入队操作。
[0017]第三方面,本申请实施例提供了一种无锁队列优化设备,所述设备包括存储器和处理器。存储器用于存储计算机程序;处理器用于执行所述计算机程序时实现上述无锁队列优化方法的步骤。
[0018]第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述无锁队列优化方法的步骤。
[0019]本专利技术的有益效果为:
[0020]1、本专利技术通过对队列数据格式约定保留一个比特作为完成位,不仅最小化对数据格式的侵入性,还将原来提交阶段需要竞争提交队列的生产者尾指针/队列的消费者尾指针,转化为对队列的生产者尾指针/队列的消费者尾指针指向的队列数据的完成位的操作,通过避免原来在提交阶段多个生产者/消费者竞争提交队列的生产者尾指针/队列的消费者尾指针所产生的数据竞争,达到对多生产者/多消费者无锁队列优化的目的,提高多生产者/多消费者无锁队列的数据处理速度。
[0021]2、本专利技术通过一个新的辅助线程即提交者,由提交者集中完成提交队列的生产者尾指针/队列的消费者尾指针,避免了原来在提交阶段多个生产者/消费者竞争提交队列的生产者尾指针/队列的消费者尾指针所产生的数据竞争,提高了无锁队列的性能。
[0022]本专利技术的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术实施例了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
[0023]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0024]图1为本专利技术实施例中所述的无锁队列优化方法流程示意图。
[0025]图2为本专利技术实施例中所述的无锁队列优化装置结构示意图。
[0026]图3为本专利技术实施例中所述的无锁队列优化设备结构示意图。
具体实施方式
[0027]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本专利技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本专利技术的实施例的详细描述并非旨在限制要求保护的本专利技术的范围,而是仅仅表示本专利技术的选定实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的
所有其他实施例,都属于本专利技术保护的范围。
[0028]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本专利技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0029]实施例1
[0030]本实施例提供了一种无锁队列优化方法,用于现有无锁队列在提交阶段提交队列的生产者尾指针/队列的消费者尾指针时,存在多个生产者/消费者竞争提交产生数据竞争的场景。
[0031]如图1所示,图中示出了本方法包括步骤S1、步骤S2、步骤S3、步骤S4和步骤S5。
[0032]步骤S1、获取队列、第一信息和生产者生产的队列数据,所述第一信息包括队列的生产者头指针、队列的生产者尾指针和队列的消费者尾指针;
[0033]在本步骤中,队列作为一种常见的数据结构,用于暂时存储生产者产生的队列数据,队列的生产者头指针指向生产者当前可用的位置,队列的生产者尾指针指向生产者还未提交的生产者的位置,队列的消费者尾指针指向消费者未提交的位置。
[0034]步骤S2、将所述生产者生产的队列数据的一个比特作为完成位,并将所述完成位设置为0;
[0035]在本步骤中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种无锁队列优化方法,其特征在于,包括:获取队列、第一信息和生产者生产的队列数据,所述第一信息包括队列的生产者头指针、队列的生产者尾指针和队列的消费者尾指针;将所述生产者生产的队列数据的一个比特作为完成位,并将所述完成位设置为0;根据所述队列的生产者头指针、所述队列的消费者尾指针将所述生产者生产的队列数据拷贝至所述队列,并将拷贝至所述队列后的所述生产者生产的队列数据的完成位设置为1;检测所述队列当前生产者尾指针指向的所述生产者生产的队列数据的完成位是否为1,得到第一检测结果;根据所述第一检测结果判断所述队列当前生产者尾指针指向的生产者生产的队列数据是否完成入队操作,并将指向当前完成入队操作的所述生产者生产的队列数据的生产者尾指针加1,再对下一个所述生产者生产的队列数据进行入队操作。2.根据权利要求1所述的无锁队列优化方法,其特征在于,根据所述队列的生产者头指针、所述队列的消费者尾指针将所述生产者生产的队列数据拷贝至所述队列,包括:根据所述队列的生产者头指针和所述队列的消费者尾指针判断所述队列是否有足够的空间使所述生产者生产的队列数据进行入队,得到第一判断结果;根据所述第一判断结果,得到所述生产者生产的队列数据在所述队列中的位置信息;根据所述位置信息将所述位置信息对应的所述生产者生产的队列数据拷贝至所述队列中。3.根据权利要求1所述的无锁队列优化方法,其特征在于,所述检测所述队列当前生产者尾指针指向的所述生产者生产的队列数据的完成位是否为1,得到第一检测结果,包括:获取提交者,所述提交者包括一个辅助线程;若所述队列的生产者头指针和所述队列的生产者尾指针不相等,则所述提交者对所述队列当前生产者尾指针指向的所述生产者生产的队列数据的完成位进行检测,并获取当前生产者生产队列数据的完成位,根据所述完成位判断当前的所述队列数据的入队操作是否完成。4.根据权利要求1所述的无锁队列优化方法,其特征在于,所述根据所述第一检测结果判断所述队列当前生产者尾指针指向的生产者生产的队列数据是否完成入队操作,包括:判断所述完成位是否为1,其中,若所述完成位为1,则判断当前所述生产者生产的队列数据入队操作完成,并将指向当前所述生产者生产的队列数据的所述队列的生产者尾指针加1,对下一个所述生产者生产的队列数据进行入队操作;若所述完成位为0,则判断当前的所述生产者生产的队列数据入队操作未完成,等待下一次循环重新确认所述完成位的数据。5.一种无锁队列优化装置,其特征在于,包括:第一获取模块,用于获取队列、第一信息和生产者生产的队列数据,所述第一信息包括队列的生产者头指针、队列的...

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

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

1