掌桥专利:专业的专利平台
掌桥专利
首页

一种有序数据处理方法及计算设备

文献发布时间:2023-06-19 11:35:49


一种有序数据处理方法及计算设备

技术领域

本发明涉及数据处理技术领域,特别涉及一种有序数据的处理方法及计算设备。

背景技术

数据处理,是对数据的采集、存储、检索、加工、变换和传输。而有序数据,是具有一定排列顺序的数据,在对有序数据处理的过程中,当有序数据处理完成后,保证输出数据(处理结果)的有序性是至关重要的。

目前,对于有序数据的数据处理方法如下:通过单生产者线程生成有序数据,并将有序数据写入缓存队列,通过加锁机制将部分有序数据加锁,并且只有一个消费者线程持有锁,因此只能通过持有锁的一个消费者线程处理加锁的部分有序数据,并得到处理结果。上述方法能够保证处理结果的有序性,但是由于单次只能由一个消费者线程处理有序数据,效率低下,并且加锁机制比较复杂,因此通过加锁机制处理有序数据的过程较繁琐、效率低。

为此,需要一种新的有序数据处理方法来解决上述技术方案中存在的问题。

发明内容

为此,本发明提供一种方法及计算设备,以解决或至少缓解上面存在的问题。

根据本发明的一个方面,提供了一种有序数据的处理方法,适于在计算设备中执行,所述计算设备预先创建并加载了缓存单元、一个获取单元和多个处理单元,所述缓存单元用于存储待处理数据,其中,所述待处理数据为有序数据,所述有序数据为具有排列顺序的数据,所述方法包括:

利用所述获取单元单次从所述缓存单元读取多个待处理数据的数据指针;

确定各个所述处理单元处理数据的数量,作为第一数值;

以所述第一数值为单位,将已获取的数据指针划分为多个数据指针段;

为每一所述处理单元分配一个所述数据指针段,其中,为各所述处理单元分配的数据指针段不重复;

通过多个所述处理单元同时访问并处理已分配给各所述处理单元的数据指针段所对应的数据,得到处理结果;

将处理结果保存至各所述处理单元已访问的数据指针中。

可选地,还包括步骤:

保存已获取的数据指针至数组;

其中,所述以所述第一数值为单位,将已获取的数据指针划分为多个数据指针段的步骤包括:

以所述第一数值为单位,将数组的索引划分为多个索引段;

其中,所述为每一所述处理单元分配一个所述数据指针段的步骤包括:

为每一所述处理单元分配一个所述索引段,其中,为各所述处理单元分配的索引段不重复。

可选地,所述确定各所述处理单元待处理数据的数量作为第一数值的步骤包括:

根据已获取的数据指针数量和所述处理单元数量,按照均等划分方式确定每个所述处理单元待处理数据的数量,作为第一数值。

可选地,所述通过多个所述处理单元同时访问已分配给各所述处理单元的数据指针段所对应的数据,并处理的步骤包括:

通过多个所述处理单元同时访问并处理已分配给各所述处理单元的索引段中数据指针所对应的数据;

其中,每一所述处理单元访问并处理已分配索引段中数据指针所对应的数据并得到处理结果的步骤包括:

确定已分配的索引段在数组中的开始索引和结束索引;

访问所述开始索引至所述结束索引所对应的数据指针;

从已访问的数据指针中读取数据,并处理,得到数据处理结果。

可选地,还包括步骤:

为所述缓存单元中的待处理数据绑定数据标识,其中,通过所述数据标识区分待处理数据是否被处理;

根据待处理数据的数据标识判断所述处理单元是否处理已分配索引段中数据指针所对应的数据,若否,不改变数据指针所对应的数据标识,若是,则判断所述处理单元是否成功处理已分配索引段中数据指针所对应的数据。

可选地,所述判断所述处理单元是否成功处理已分配索引段中数据指针所对应的数据的步骤包括:

判断所述处理单元是否成功处理已分配索引段的数据指针所对应的数据,若是,则将已分配索引段中数据指针所对应数据的数据标识置位,若否,将已分配索引段中数据指针所对应数据的数据标识设置为预设值,其中,所述预设值与数据标识置位和数据标识复位所对应的数值不同。

可选地,还包括步骤:

判断所有所述处理单元是否处理完成已分配索引段中数据指针所对应的数据,若是,则通过所述获取单元从所述缓存单元获取多个待处理数据的数据指针,若否,则继续判断所有所述处理单元是否处理完成已指定索引段中数据指针所对应的数据。

可选地,所述处理单元在处理数据后不会被销毁。

根据本发明的另一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的方法的指令。

根据本发明的又一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。

根据本发明的技术方案,提供了一种有序数据的处理方法,该方法为每个消费线程分配待处理有序数据的数据指针,多个消费线程可以同时处理数据指针中的有序数据,并保存数据结果至对应的数据指针,由于多个线程可同时处理有效数据,提高有序数据的处理效率。并且处理数据后直接保存至对应的数据指针,相当于数据指针内容改变但是数据指针并未改变,由于数据指针是有序的,从而在无需加锁处理的情况下保证处理结果的有序性,使得有序数据的处理过程简便。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。

图1示出了根据本发明一个实施例的计算设备100的示意图;

图2示出了根据本发明一个实施例的一种有序数据的处理方法200的流程图;以及

图3示出了根据本发明一个实施例的生产者单元、缓存单元、获取单元和处理单元的连接关系示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

有序数据,即具有一定排列顺序的数据。已有技术中,对于有序数据的数据处理方法为:通过单生产者线程生成有序数据,并将有序数据写入缓存队列,通过加锁机制将部分有序数据加锁,并且加锁机制中,只满足一个消费者线程持有锁,因此只能通过持有锁的一个消费者线程处理加锁的部分有序数据,并得到处理结果,之后再将其他部分的有序数据加锁,通过持有锁的一个消费者线程处理加锁的部分有序数据,得到处理结果,重复上述过程,直至处理完成缓存队列的所有有序数据。上述方法由于一次通过一个消费者线程处理加锁的部分有序数据,能够保证处理结果的有序性,但是由于单次只能由一个消费者线程处理有序数据,效率低下,并且加锁机制比较复杂,因此通过加锁机制处理有序数据的过程较繁琐、效率低。

为此,本发明提出了一种有序数据的处理方法,该方法在计算设备100中执行,图1示出了根据本发明一个实施例的计算设备100的结构图。计算设备100的框图如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。

取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。

取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上利用程序数据124进行操作。程序数据124包括指令,在根据本发明的计算设备100中,程序数据124包含用于执行程序调试方法200的指令。

计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138,可移除储存器136和不可移除储存器138均与储存接口总线134连接。本发明中,程序执行过程中发生的各事件的相关数据和指示各事件发生的时间信息,可存储于储存设备132中,操作系统120适于管理储存设备132。其中,储存设备132可为磁盘。

计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。

网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。

计算设备100可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和WEB服务器等,也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备100的操作系统120被配置为执行根据本发明的一种有序数据的处理方法200。

图2示出了根据本发明一个实施例的有序数据的处理方法200的示意性流程图。该方法200在计算设备100中执行。在执行有序数据的处理方法200之前,计算设备100预先创建并加载了生产者单元、缓存单元、获取单元和处理单元,如图3所示,图3为生产者单元、缓存单元、获取单元和处理单元的连接关系示意图,图3中以一个生产者单元、一个缓存单元、一个获取单元和多个处理单元为例,其中,缓存单元分别与生产者单元和获取单元通信连接,获取单元还与多个处理单元通信连接。

计算设备100通过生产者单元生成有序数据,并为有序数据分配状态标识,根据状态标识区分待处理有序数据是否被处理以及是否被成功处理,状态标识可以根据实际情况进行设置,在本发明一个实施方式中,状态标识包括0、1和-1,状态标识为0表示数据未被处理,状态标识为1表示数据已被处理,数据标识为-1表示数据处理出错,其中状态标识为1时,说明无需再处理数据标识(1)对应的数据,数据标识为0和-1时,说明还需再次处理数据标识(0和-1)对应的数据,在生产者单元产生有序数据时,计算设备100为有序数据分配的数据标识为0,当处理有序数据之后,会根据数据处理成功或失败状态更改数据标识。

缓存单元用于存储通过生产者单元生成的有序数据,获取单元用于从缓存单元获取有序数据,多个处理单元用于处理获取单元已获取的有效数据,需要说明的是,获取单元和处理单元数量之和不超过计算设备的内核数量。

生产者单元为生产者,生产者可以为类、函数、线程、进程等,缓存单元为缓存队列,计算设备100通过生产者生成有序数据后写入缓存队列的队列头部,一个获取单元和多个处理单元均为消费者线程,计算设备100预先创建多个消费者线程后,将多个消费者线程设置为休眠状态,当有需要处理的有序数据时,会激活已创建的多个消费者线程中的一个,作为获取单元。

如图2所示,方法始于步骤S210。在步骤S210中,利用获取单元单次从缓存单元读取多个待处理数据的数据指针。具体地,获取单元轮询缓存单元中的待处理有序数据,当存在待处理有序数据时,一次从缓存单元获取多个待处理有序数据的数据指针,其中,数据指针即为数据的内存地址。从缓存单元读取待处理数据的数据指针数量是根据实际场景而设置的,本发明对此不做限定,例如,获取单元单次从缓存单元获取20个有序数据的数据指针。由于本发明中获取的是数据指针,而不是数据本身,因此在缓存队列中每个数据是变长的。

保存已获取的数据指针至数组,此时每个数据指针对应数组的一个索引。并接着在步骤S220中,确定各个处理单元处理数据的数量,作为第一数值。具体地,根据已获取的数据指针数量和处理单元数量,确定各个处理单元处理有序数据的数量。在本发明一个实施方式中,利用已获取的数据指针数量除以处理单元数量(即均等划分方式),得到每个处理单元处理有效数据的数量。例如,若处理单元数量为4,已获取的数据指针数量为20,那么每个处理单元待处理有效数据的数量为20除以4等于5,即每个待处理单元待处理有效数据的数据量为5。

接着在步骤S230中,以第一数值为单位,将已获取的数据指针划分为多个数据指针段。由于数据指针保存至数组中,且每个数据指针对应数组的一个索引,因此将已获取的数据指针划分为多个数据指针段,相当于将数组的索引划分为多个索引段。例如,处理单元数量为4(分别包括处理单元1、处理单元2、处理单元3和处理单元4),每个待处理单元待处理有效数据的数据量为5,已获取的数据指针数量为20,因此对应的数组索引为0-19,那么以第一数值为单位(即以5为单位),将数组的索引划分为4个索引段,包括:0-4、5-9、10-14、15-19。

随后在步骤S240中,为每一处理单元分配一个数据指针段,即,为每一处理单元分配一个索引段,实质是为每一处理单元分配部分待处理的有序数据。同样地,例如处理单元数量为4(分别包括处理单元1、处理单元2、处理单元3和处理单元4),每个待处理单元待处理有序数据的数据量为5,已获取的数据指针数量为20,数据指针对应的数组索引为0-19,那么以第一数值为单位(即以5为单位),将数组的索引划分为4个索引段,包括:0-4、5-9、10-14、15-19,那么为处理单元1分配的索引段为0-4,为处理单元2分配的索引段为5-9,为处理单元3分配的索引段为10-14,为处理单元4分配的索引段为15-19。此处需要说明的是,为各处理单元分配的索引段不重复,避免各处理单元重复处理有序数据,从而提高有序数据的处理效率。

在本发明一个实施方式中,还会根据待处理数据的数据标识判断处理单元是否处理已分配索引段中数据指针所对应的有序数据,若否,不改变数据标识,即保持已分配索引段中数据指针所对应数据的数据标识为0(数据未被处理),若是,则在步骤S250中,通过多个处理单元同时访问并处理已分配给各处理单元的数据指针段所对应的有序数据,得到处理结果,即,通过多个处理单元同时访问并处理已分配给各处理单元的索引段中数据指针所对应的有序数据,得到处理结果。由于通过多个处理单元同时访问并处理已分配给各处理单元的索引段中数据指针所对应的有序数据,实现了多线程同时处理有序数据,提高了有序数据的处理效率。

具体地,每一处理单元访问并处理已分配索引段中数据指针所对应的有序数据得到处理结果的步骤包括:确定已分配的索引段在数组中的开始索引和结束索引(例如索引段0-4、5-9、10-14、15-19分别对应的开始索引和结束索引为0和4、5和9、10和14、15和19),访问开始索引至结束索引所对应的数据指针,并从已访问的数据指针中读取有序数据,并处理,得到数据处理结果。

通过多个处理单元同时处理已分配索引段中数据指针所对应的有序数据后,继续判断处理单元是否成功处理已分配索引段中数据指针所对应的有序数据,若是,则将已分配索引段中数据指针所对应数据的数据标识置位(即将数据指针所对应数据的数据标识设置为1,表示数据已被处理),若否,将已分配索引段中数据指针所对应数据的数据标识设置为预设值(例如将数据指针所对应数据的数据标识设置为-1,表示数据处理出错)。

另外需要说明的是,处理单元在处理数据后不会被销毁。并继续判断所有处理单元是否处理完成已分配索引段中数据指针所对应的数据,若是,则从消费者线程中选择一个消费者线程作为获取单元,通过获取单元从缓存单元一次获取多个待处理有序数据,并基于余下的多个消费者线程作为多个处理单元处理已获取的有序数据,从而避免创建或销毁消费者线程时造成的资源消耗,并且节省了创建或销毁消费者线程所需时间,进一步提高有序数据的处理效率。若否,则继续判断所有处理单元是否处理完成已指定索引段中数据指针所对应的数据。

最后在步骤S260中,将数据处理结果保存至各处理单元已访问的数据指针中,从而保证了有序数据的处理结果仍存储于原数据指针中,由于原数据指针是按照一定顺序存储的,因此处理结果同样按照一定顺序存储,从而保证了有序数据处理结果的有序性,并且上述过程无需通过加锁机制即可实现有序数据的处理,使得有序数据的处理过程简便。

通过上述内容可知,本发明提供的有序数据的处理方法为每个消费线程分配待处理有序数据的数据指针,多个消费线程可以同时处理数据指针中的数据,并保存数据结果至对应的数据指针,由于多个线程可同时处理数据,提高有序数据的处理效率。并且处理结果直接保存至对应的数据指针,相当于数据指针内容改变但是数据指针并未改变,由于数据指针是有序的,从而在无需加锁处理的情况下保证处理结果的有序性,使得有序数据的处理过程简便。

这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。

在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的有序数据的处理方法。

以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。

在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。

如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

相关技术
  • 一种有序数据处理方法及计算设备
  • 一种数据处理方法及装置、一种计算设备及存储介质
技术分类

06120112986821