[发明专利]并发无锁队列实现方法、装置及存储介质有效
申请号: | 201911174418.3 | 申请日: | 2019-11-26 |
公开(公告)号: | CN110888727B | 公开(公告)日: | 2022-07-22 |
发明(设计)人: | 陈书骞 | 申请(专利权)人: | 北京达佳互联信息技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 华进联合专利商标代理有限公司 44224 | 代理人: | 曹瀚青 |
地址: | 100085 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并发 队列 实现 方法 装置 存储 介质 | ||
本公开关于一种并发无锁队列实现方法、装置及存储介质,并发无锁队列实现方法适用于多生产者线程多消费者线程模型,多生产者线程多消费者线程模型包括M个生产者线程和N个消费者线程,并发无锁队列实现方法包括:对于M个生产者线程中的任意一个生产者线程,若生产者线程根据其线程局部变量的注册标志确定已注册N个队列,则向N个队列写入数据,其中,N个队列在注册队列时会将队列的持有信息写入生产者线程的线程局部变量,对于N个消费者线程中的任意一个消费者线程,消费者线程根据队列的持有信息,确定持有M个无锁队列,以轮询的形式从M个无锁队列消费数据,从而降低发生并发访问冲突的概率。
技术领域
本公开涉及数据处理领域,尤其涉及并发无锁队列实现方法、装置及存储介质。
背景技术
在数据处理领域,队列是一种常见的数据结构,队列通常是多个应用模块间保存共享数据的一种方式,典型的队列是先入先出(FirstInputFirstOutput,FIFO)队列,其应用模式通常是一个应用模块把数据保存到队列的一端中(通常可以称这种产生数据的模块为生产者线程),而另一个应用模块在队列的另一端把数据按照先后顺序从队列中取出(通常可以称这种取数据的模块为消费者线程)。
简单的单生产者线程单消费者线程FIFO队列模型中,生产者线程把生产出来的数据存入队列尾中,而消费者线程则从队列头中取出数据,生产者线程和消费者线程各司其职,不存在并发访问,所以没有资源竞争的冲突。而在有多个应用模块同时共享一个队列时,就可能出现以下另外三种情形:多生产者线程单消费者线程、单生产者线程多消费者线程和多生产者线程和多消费者线程。这就导致了可能出现多个生产者线程或者多个消费者线程同时对队列进行访问的情况(通常称为并发访问),这种情况下,如果没有很好的解决并发访问时的冲突问题,就会导致数据错误。在计算机软件领域中,通过采用锁机制来解决并发访问时的冲突问题。锁机制的原理如下:当某个模块要对队列进行访问时,先要取得队列的锁,把队列占为己有,然后才对队列进行相应的读写访问;当队列的锁被某个模块取得时,其它模块无权对队列进行访问。
这种运用锁机制把队列独占的机制,当出现并发冲突时,没有取得队列锁的模块可能需要一直空等待而无法执行其它操作(当其它操作必需要访问队列之后才能执行)。这在单核中央处理器(CentralProcessingUnit,CPU)的系统中,不会存在浪费CPU资源的问题。然而,在多核CPU系统中,假如每个CPU核运行一个单独的应用模块,那么当出现并发访问冲突时,等待获取队列锁的CPU核则会出现空等待而导致CPU资源浪费的情况,进而导致系统效率低下的问题。
发明内容
本公开提供一种并发无锁队列实现方法、装置及存储介质,以至少解决相关技术中在多核CPU系统中,假如每个CPU核运行一个单独的应用模块,那么当出现并发访问冲突时,等待获取队列锁的CPU核则会出现空等待而导致CPU资源浪费的情况,进而导致系统效率低下的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种并发无锁队列实现方法,所述并发无锁队列实现方法适用于多生产者线程多消费者线程模型,所述多生产者线程多消费者线程模型包括M个生产者线程和N个消费者线程,包括对于所述M个生产者线程中的任意一个生产者线程,若所述生产者线程根据其线程局部变量的注册标志确定已注册N个队列,则向所述N个队列写入数据;其中,所述N个队列在注册队列时会将队列的持有信息写入所述生产者线程的线程局部变量;对于所述N个消费者线程中的任意一个消费者线程,所述消费者线程根据队列的持有信息,确定持有M个无锁队列,以轮询的形式从所述M个无锁队列消费数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京达佳互联信息技术有限公司,未经北京达佳互联信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911174418.3/2.html,转载请声明来源钻瓜专利网。