基于生产者消费者模型的数据处理方法、系统及存储介质技术方案

技术编号:24330561 阅读:42 留言:0更新日期:2020-05-29 19:27
一种基于生产者消费者模型的数据处理方法、系统及存储介质,该方法包括:建立生产者消费者模型对数据进行处理,根据消费者的数量生成环状缓冲区,环状缓冲区中每个单元用于存放每个消费者对应的数据队列的地址;消费者中包括一个哨兵消费者,哨兵消费者轮询是否有全局的可处理数量,如果有全局的可处理数量,哨兵消费者唤醒其他消费者,其他消费者被唤醒后则处理对应数据列队中的数据,直到全局的可处理数量小于阈值,其他消费者进入休眠状态,哨兵消费者回到轮询步骤;生产者产生数据后依次平均分配到每个消费者对应的数据队列中。本发明专利技术能够随着消费者数量的增加提高数据处理性能,提高并行处理速度。

Data processing method, system and storage medium based on producer consumer model

【技术实现步骤摘要】
基于生产者消费者模型的数据处理方法、系统及存储介质
本专利技术属于数据处理领域,特别涉及基于生产者消费者模型的数据处理方法、系统及存储介质。
技术介绍
计算机硬件的飞速发展,多道处理器的性能得到不断提升,得益于内存大幅提升、处理器数量的增加、操作系统的不断优化,大量优秀的软件设计,使得我们能够充分发挥系统性能,提升软件作业效率。软件设计中存在一种设计模型生产者和消费者模型,解决生产者和消费者之间的强耦合问题,任何的这块设计都可以由一对一(单生产单消费)模型衍生,一对一的设计可以利用优秀的算法设计避开资源的互斥同步,但是一对多的设计因为互斥和资源同步问题,导致无法在消费者越多的情况下充分发挥系统的性能,反而会导致系统的性能下降。
技术实现思路
专利技术目的:本专利技术针对现有技术存在的问题,提出了一种能够有效提高系统数据处理速度的基于生产者消费者模型的数据处理方法。技术方案:为实现上述目的,本专利技术提供了一种基于生产者消费者模型的数据处理方法,建立生产者消费者模型对数据进行处理,其中,根据消费者的数量生成环状缓冲区,环状缓冲区中每个单元用于存放每个消费者对应的数据队列的地址;消费者中包括一个哨兵消费者,所述哨兵消费者轮询是否有全局的可处理数量,如果有全局的可处理数量,哨兵消费者唤醒其他消费者,其他消费者被唤醒后则处理对应数据列队中的数据,每处理一个数据,全局的可处理数量自减,直到全局的可处理数量小于阈值,其他消费者进入休眠状态,哨兵消费者回到轮询步骤;生产者产生数据后平均分配到每个消费者对应的数据队列中,每产生一个数据,全局的可处理数量自增,数据产生总量自增。进一步,所述每个消费者对应的数据队列为无锁队列。无锁队列可以让生产和消费者之间解耦,之间不需要资源竞争冲突,提高程序并行操作,从而提高处理性能。进一步,所述生产者根据数据产生总量与消费者数量之间求模运算得到产生的数据即将存放到的数据队列的编号。这样可以使数据平均的分配到每个消费者对应的数据队列中,从而能够有效的提高数据的处理速度。本专利技术还提供了一种基于生产者消费者模型的数据处理系统,包括处理单元、存储单元和缓存单元;所述存储单元用于存储数据;所述处理单元用于将产生的数据存入存储单元,并处理存储单元中存储的数据;处理单元中包括消费者处理模块和生产者处理模块,消费者处理模块中包括多个消费者,所述缓存单元中根据消费者的数量生成环状缓冲区,环状缓冲区中每个单元用于存放每个消费者对应的数据队列的地址;消费者中至少包括哨兵消费者,所述哨兵消费者轮询是否有全局的可处理数量,如果有全局的可处理数量,哨兵消费者唤醒其他消费者,其他消费者被唤醒后则处理对应数据列队中的数据,每处理一个数据,全局的可处理数量自减,直到全局的可处理数量小于阈值,其他消费者进入休眠状态,哨兵消费者回到轮询步骤;生产者处理模块中包括至少一个生产者,所述生产者产生数据后平均分配到每个消费者对应的数据队列中,每产生一个数据,全局的可处理数量自增,数据产生总量自增。其中,所述每个消费者对应的数据队列为无锁队列;待处理的数据的内存地址插入无锁队列的头部。本专利技术还提供了一种存储介质,所述存储介质上保存有程序,所述程序被运行时执行上述基于生产者消费者模型的数据处理方法。还提供了一种处理器,所述处理器用于运行程序,其中,所述程序被运行时执行上述基于生产者消费者模型的数据处理方法。工作原理:本专利技术对采用的生产者和消费者模型进行了改进,消费者和生产者的线程均独立并行工作。生产者生产数据并且平均分配给每个消费者;消费者中的哨兵消费者关注是否有可处理数量,如果有则唤醒其他消费者,其他消费通过对应的地址找到对应的待处理的数据队列,并对数据队列中的数据进行处理,处理结束后,其他消费者进入休眠状态,哨兵消费者进行可处理数量的检测。消费者和生产者之间不需要进行消息的传递,实现了一个生产者对多个消费者的解耦,同时,生产者可以一直持续生产数据,不会被任何消费者干扰,能够实现生产最大化。有益效果:与现有技术相比,本专利技术提供的方法中,生产者和消费者之间完全解耦,没有互斥冲突,能够随着消费者数量的增加提高数据处理性能,从而最大程度的提高系统并行处理速度。附图说明图1为实施例中电子设备结构示意图;图2为实施例中生产者处理模块的工作流程图;图3为实施例中消费者处理模块的工作流程图。具体实施方式下面将结合本专利技术实例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本实施例提供一种基于生产者消费者模型的数据处理方法,该方法可以应用于电子设备中。该电子设备可以为网络设备、信息技术设备、用户终端。该电子设备可以但不限于:软件定义网络控制器、交换机、路由器、通用服务器、个人电脑、笔记本、平板电脑、智能终端等。如图1所示,该电子设备包括:处理器1、存储器2和缓存3,处理器1、存储器2和缓存3可以通过总线进行连接,也可以通过其他结构进行连接。处理器1可以为中央处理器、一个或多个用于控制程序执行的集成电路、可以是使用FPGA开发的硬件电路,也可以是基带处理器等。处理器1至少有两个处理内核可以并行处理数据。存储器2包括只读存储器、随机存取存储器和磁盘存储器;存储器2用于存储处理1在运行时所需的数据。存储器2可以为内存、硬盘、U盘等。缓存3是可以进行高速数据交换的存储器、它先于内存与处理器1交换数据,所以速率很快;缓存3用于存储待处理数据的地址。本实施例公开的基于生产者消费者模型的数据处理方法为:在处理器中建立一个生产者多个消费者模型对数据进行处理,其中生产者消费者模型分为生产者处理模块和消费者处理模块,生产者处理模块和消费者处理模块并行处理数据。其中,在整个系统中产生数据即为生产者消费者模型中的生产者,按照生产者处理模块中的线程进行工作;在整个系统中对数据进行处理的单元即为生产者消费者模型中的消费者,按照消费者处理模块中的线程进行工作。缓存3中包括根据消费者的数量生产的环形缓冲区、全局的可处理数量、全局的总生产数量和每个队列当前可处理的数量;其中,环形缓冲区基于数组的方式实现,环形缓冲区中有N个单元,每个单元即为一个数组,每个单元编号和消费者的编号相对应,环形缓冲区中每个单元用于存储对应消费者的数据队列的地址,N为消费者的数量。每个消费者均有一个对应的无锁队列,无锁队列可以存储在缓存3中,主要用于存储待处理的数据的地址。全局的可处理数量、全局的总生产数量和每个队列当前可处理的数量均为无锁访问的原子变量。如图2所示,生产者处理模块的工作线程,包括以下步骤:步骤11:生产者产生一个数据,全局的可处理数量和全局的总生产数量均加1;步骤12:全局的总生产数量和消费者数量进行求模运算,得到的结果即为所产生的这个数据即将存储的消费者的本文档来自技高网...

【技术保护点】
1.一种基于生产者消费者模型的数据处理方法,其特征在于:建立生产者消费者模型对数据进行处理,其中,根据消费者的数量生成环状缓冲区,环状缓冲区中每个单元用于存放每个消费者对应的数据队列的地址;消费者中包括一个哨兵消费者,所述哨兵消费者轮询是否有全局的可处理数量,如果有全局的可处理数量,哨兵消费者唤醒其他消费者,其他消费者被唤醒后则处理对应数据列队中的数据,每处理一个数据,全局的可处理数量自减,直到全局的可处理数量小于阈值,其他消费者进入休眠状态,哨兵消费者回到轮询步骤;生产者产生数据后平均分配到每个消费者对应的数据队列中,每产生一个数据,全局的可处理数量自增,数据产生总量自增。/n

【技术特征摘要】
1.一种基于生产者消费者模型的数据处理方法,其特征在于:建立生产者消费者模型对数据进行处理,其中,根据消费者的数量生成环状缓冲区,环状缓冲区中每个单元用于存放每个消费者对应的数据队列的地址;消费者中包括一个哨兵消费者,所述哨兵消费者轮询是否有全局的可处理数量,如果有全局的可处理数量,哨兵消费者唤醒其他消费者,其他消费者被唤醒后则处理对应数据列队中的数据,每处理一个数据,全局的可处理数量自减,直到全局的可处理数量小于阈值,其他消费者进入休眠状态,哨兵消费者回到轮询步骤;生产者产生数据后平均分配到每个消费者对应的数据队列中,每产生一个数据,全局的可处理数量自增,数据产生总量自增。


2.根据权利要求1所述的基于生产者消费者模型的数据处理方法,其特征在于:所述每个消费者对应的数据队列为无锁队列。


3.根据权利要求1所述的基于生产者消费者模型的数据处理方法,其特征在于:所述生产者根据数据产生总量与消费者数量之间求模运算得到产生的数据即将存放到的数据队列的编号。


4.一种基于生产者消费者模型的数据处理系统,其特征在于:包括处理单元、存储单元和缓存单元;所述存储单元用于存储数据;所述处理单元用于将产生的数据存入存储单元,并处理存储单元中存储的数据;处理单元中包括消费者处理模块和生产者处理模块,消费者处理模块中包括多个消费者,所述缓存单元中根据消费者的数量生成环状缓冲区,环状缓...

【专利技术属性】
技术研发人员:赵熙
申请(专利权)人:南京云信达科技有限公司
类型:发明
国别省市:江苏;32

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

1