CN111124641B - 一种利用多线程的数据处理方法及系统 - Google Patents

一种利用多线程的数据处理方法及系统 Download PDF

Info

Publication number
CN111124641B
CN111124641B CN201911272288.7A CN201911272288A CN111124641B CN 111124641 B CN111124641 B CN 111124641B CN 201911272288 A CN201911272288 A CN 201911272288A CN 111124641 B CN111124641 B CN 111124641B
Authority
CN
China
Prior art keywords
data
queue
output
thread
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911272288.7A
Other languages
English (en)
Other versions
CN111124641A (zh
Inventor
王建成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unihub China Information Technology Co Ltd
Original Assignee
Unihub China Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unihub China Information Technology Co Ltd filed Critical Unihub China Information Technology Co Ltd
Priority to CN201911272288.7A priority Critical patent/CN111124641B/zh
Publication of CN111124641A publication Critical patent/CN111124641A/zh
Application granted granted Critical
Publication of CN111124641B publication Critical patent/CN111124641B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提出了一种利用多线程的数据处理方法及系统,其中该方法包括:设置环形存储区域,其中,环形存储区域包括原始数据队列及输出数据队列;同时执行数据检索、计算、输出线程;利用数据检索线程,读取原始数据,将原始数据写入原始数据队列;利用数据计算线程,读取原始数据队列中的待读取数据,并进行处理得到处理结果,将处理结果写入输出数据队列;利用数据输出线程,读取输出数据队列中的待读取数据,并进行输出。该方法及系统能够处理单位时间内数据量超大的情况,环形队列内存空间可以重复利用,避免频繁内存分配和释放的开销,实现多线程真正并发运行,在处理过程中无锁、无临界区等限制条件,每个线程相互独立不受影响,处理性能极高。

Description

一种利用多线程的数据处理方法及系统
技术领域
本发明涉及数据存储技术领域,尤指一种利用多线程的数据处理方法及系统。
背景技术
目前,在一些应用场景中,会存在数据量超大,数据计算处理时限超低的情况,例如几分钟内有几十G,几亿条数据或者更多,必须在一分钟或两分钟之内分析完并完成输出。由于数据具有连续性特点(一定时间范围数据具有关联性),比如通信行业信令数据合成等,如果应用传统的分析方法,将数据全部导入内存再进行分析显然是不合适的,而应用多线程加锁、同步互斥或者信号量通知等同步方法,仍然效率低下,因为无论是加锁、临界区互斥或者信号量通知等方法,都会造成某些时间段的流程,仍然是按单线程顺序执行,并没有真正实现多线程并发运行,这样的效率是满足不了实际要求。
综上来看,现有技术中提出的多线程并发方法主要存在以下缺陷:
1、不同处理线程间存在加锁、互斥或者信号量通知等,无论利用哪一种同步方式,都意味着在某些时间段同时只能有一个线程在运行,而其它个线程只能等待上一线程完成才能继续运行,因而性能相对于单线程来说提升有限;
2、对于采用第三方中间件或开源的队列软件,使用较安全可靠,但是性能受限于调用中间件的时延。
因此,亟需一种高效、稳定的多线程并发处理方式,以实现数据的快速处理及输出。
发明内容
为解决上述问题,本发明提出了一种利用多线程的数据处理方法及系统,使用无锁环形队列作为队列存储,同时执行数据检索线程、数据计算线程及数据输出线程,实现两队列多线程的数据处理方式,实现高效、稳定的多线程并发处理方式,真正实现多线程并发检索、数据复杂计算、处理数据,尤其适用于对机器程序处理性能和时限要求非常高,不计较CPU和内存高使用的场景。
在本发明一实施例中,提出了一种利用多线程的数据处理方法,该方法包括:
设置环形存储区域,其中,所述环形存储区域包括原始数据队列及输出数据队列;
同时执行数据检索线程、数据计算线程及数据输出线程;
利用所述数据检索线程,读取原始数据,并将所述原始数据写入所述原始数据队列;
利用所述数据计算线程,读取所述原始数据队列中的待读取数据,并进行处理得到处理结果,将所述处理结果写入所述输出数据队列;其中,所述原始数据队列中的待读取数据是已经写入完成的原始数据;
利用所述数据输出线程,读取所述输出数据队列中的待读取数据,并进行输出;其中,所述输出数据队列中的待读取数据是已经写入完成的处理结果。
在本发明一实施例中,还提出了一种利用多线程的数据处理系统,该系统包括:
队列设置模块,用于设置环形存储区域,其中,所述环形存储区域包括原始数据队列及输出数据队列;
线程执行模块,用于同时执行数据检索线程、数据计算线程及数据输出线程;其中,
利用所述数据检索线程,读取原始数据,并将所述原始数据写入所述原始数据队列;
利用所述数据计算线程,读取所述原始数据队列中的待读取数据,并进行处理得到处理结果,将处理结果写入所述输出数据队列;其中,所述原始数据队列中的待读取数据是已经写入完成的原始数据;
利用所述数据输出线程,读取所述输出数据队列中的待读取数据,并进行输出;其中,所述输出数据队列中的待读取数据是已经写入完成的处理结果。
在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现利用多线程的数据处理方法。
在本发明一实施例中,还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现利用多线程的数据处理方法。
本发明提出的利用多线程的数据处理方法及系统能够处理单位时间内数据量超大的情况,环形队列内存空间可以重复利用,避免频繁内存分配和释放的开销,实现多线程真正并发运行,在处理过程中无锁、无临界区等限制条件,每个线程相互独立不受影响,处理性能极高。
附图说明
图1是本发明一实施例的原始数据队列的示意图。
图2是本发明一实施例的输出数据队列的示意图。
图3是本发明一实施例的利用多线程的数据处理的流程示意图。
图4是本发明一实施例的利用多线程的数据处理系统架构示意图。
图5是本发明一实施例的线程执行模块的架构示意图。
图6是本发明一实施例的计算机设备结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种利用多线程的数据处理方法及系统,该方法及系统可以实现数据量大、处理时限低、场景多、线程多、CPU高利用、无同步等待等情况下的数据处理,其利用无锁环形队列和数据安全读写标志位真正实现多线程并发检索、数据复杂计算、数据处理,适用于对机器程序处理性能和时限要求非常高,不计较CPU和内存高使用的场景。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
图1及图2分别是本发明一实施例的原始数据队列及输出数据队列的示意图。参考图1及图2所示,首先,设置环形存储区域。其中,所述环形存储区域包括原始数据队列10及输出数据队列20。
设置的环形存储区域为两块,每一块环形存储区域具有一定的容量,可以根据预估的入队速度及出队速度进行设置;其中,第一块环形存储区域为原始数据队列10;第二块环形存储区域为输出数据队列20。
所述原始数据队列10及输出数据队列20为无锁环形队伍。
所述原始数据队列10中包含K个元素,每个元素的标志位状态为:待读取、读取中、待写入或写入中;
所述输出数据队列20中包含L个元素,每个元素的标志位状态为:待读取、读取中、待写入或写入中。
K、L一般都是2的指数倍,可以相等。根据实际需要,也可以根据入队及出队速度自定设置K、L,例如预估入队速度大于出队速度,则可以设置尽可能存储量大的数据队列。
再结合图1及图2来看,在环形队列进行数据入队(push)、出队(pop)处理的具体过程为:
设置一个线性表,ID(地址编号)为0的元素为线性表首个元素;环形队列的特点是,不需要进行动态的内存释放和分配,使用固定大小的内存空间反复使用。
入队和出队的过程通过不断的交叉进行,当push操作时,head(写入数据后所占的元素)会增加;而pop操作时,tail(未写入数据的元素)会增加。
举例而言,以图1所示的原始数据队列来看,head和tail在环形队列中都是按照ID顺时针增加,到达最大ID后继续从ID 0开始;例如,head指向ID 10,即ID 10正在进行或已完成push操作,则下一个push操作会对ID 11进行;而ID 5已完成pop操作,tail即指向ID6,则下一个pop操作会对ID 6进行。
当push的速度快时,有可能追上tail,这个时候说明队列已经满了,不能再进行push的操作了,需要等待pop操作腾出队列的空间。
当pop的操作快时,使得tail追上head,这个时候说明队列已空了,不能再进行pop操作了,需要等待push进来数据。
在设置完原始数据队列10及输出数据队列20后,可以利用多线程进行数据处理。具体过程可以结合图3所示,图3是本发明一实施例的利用多线程的数据处理的流程示意图。
如图3所示,同时执行数据检索线程102、数据计算线程104及数据输出线程106;其中,
利用所述数据检索线程102,读取原始数据,并将原始数据写入所述原始数据队列10;其中,原始数据是经过未分析处理的数据。
利用所述数据计算线程104,读取所述原始数据队列10中的待读取数据,并进行处理得到处理结果,将所述处理结果写入所述输出数据队列20;其中,所述原始数据队列10中的待读取数据是已经写入完成的原始数据,即,利用数据检索线程102写入的数据。
利用所述数据输出线程106,读取所述输出数据队列20中的待读取数据,并进行输出;其中,所述输出数据队列20中的待读取数据是已经写入完成的处理结果,即,利用数据计算线程104写入的数据。
在一实施例中,进一步结合图3所示,多线程的详细执行流程为:
数据检索线程102的详细执行流程:
利用所述数据检索线程102,读取原始数据,并依次检查所述原始数据队列10中元素的标志位状态;
当遇到状态为“待写入”的元素,进行入队处理;
将所述原始数据写入至对应的元素,并将元素的标志位状态修改为“写入中”;
在写入完成后,将元素的标志位状态修改为“待读取”,并继续检查所述原始数据队列10中元素的标志位状态。
数据计算线程104的详细执行流程:
利用所述数据计算线程104,依次检查所述原始数据队列10中元素的标志位状态;
当遇到状态为“待读取”的元素,进行出队处理;
读取对应的元素中的待读取数据,并对读取到的数据进行分析处理得到处理结果;其中,在读取时,将元素的标志位状态修改为“读取中”;
利用所述数据计算线程104,依次检查所述输出数据队列20中元素的标志位状态;
当遇到状态为“待写入”的元素,进行入队处理;
将所述处理结果写入对应的元素,并将元素的标志位状态修改为“写入中”;
在写入完成后,将元素的标志位状态修改为“待读取”,并继续检查所述输出数据队列20中元素的标志位状态;同时,清除所述原始数据队列10中对应的元素的待读取数据,将元素的标志位状态修改为“待写入”,并继续检查所述原始数据队列10中元素的标志位状态。
数据输出线程106的详细执行流程:
利用所述数据输出线程106,依次检查所述输出数据队列20中元素的标志位状态;
当遇到状态为“待读取”的元素,进行出队处理;
读取对应的元素中的所述待读取数据,并进行输出;其中,在读取时,将元素的标志位状态修改为“读取中”;
在输出完成后,清除所述输出数据队列20中对应的元素的待读取数据,将元素的标志位状态修改为“待写入”,并继续检查所述输出数据队列20中元素的标志位状态。
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
更进一步的,为了满足入队、出队及数据连续性的需求,可以通过预估入队、出队的速度设置合适的环形队列空间大小。如果预估的入队速度大于出队速度,则可以设置尽量大的环形队列空间,来满足数据输入的需求。
另外,在执行多线程的过程中,还可以获取所述原始数据队列及所述输出数据队列的入队速度及出队速度,根据实际的入队速度及出队速度进行优化调节,具体方式如下:
A、当所述原始数据队列或所述输出数据队列的入队速度等于出队速度时,多线程正常工作;这是环形队列的常态,即入队速度和出队速度大致一样,即使某个突然时刻入队速度陡然变高或者出队速度陡然变低,都能通过队列这个缓冲区把这些数据先存起来,等到能处理的时候再处理。
B1、当所述原始数据队列的入队速度大于出队速度时,优化所述数据计算线程的出队处理程序,提高出队的运算速度;另外,还可以将原始数据队列的空间调节的尽量大,来满足数据输入的需求。
B2、当所述输出数据队列的入队速度大于出队速度时,优化所述数据输出线程的出队处理程序,提高出队的运算速度;另外,还可以将输出数据队列的空间调节的尽量大,来满足数据输入的需求。
C1、当所述原始数据队列的入队速度小于出队速度时,休眠所述数据计算线程一定时间;或者通过优化数据检索线程的入队处理程序,提高入队的运算速度。
C2、当所述输出数据队列的入队速度小于出队速度时,休眠所述数据输出线程一定时间;或者通过优化数据计算线程的入队处理程序,提高入队的运算速度。
如果出现上述C1、C2的情况,说明程序出队处理元素的速度很快,这是比较好的情况,唯一不足的是读取队列的时候可能经常会轮询队列是否有新的元素,造成CPU占用过高,可进行判断,若长时间检测不到可供运算数据时,可以休眠计算线程几毫秒。
上述利用多线程的数据处理方法适合处理单位时间内数据量超大的情况,环形队列内存空间可以重复利用,避免频繁内存分配和释放的开销,并且可以实现多线程真正并发运行,无锁、无临界区等限制条件,每个线程相互独立不受影响,处理性能极高。
在实际应用中,对于通信行业信令数据合成,利用本方法处理其中等计算复杂度实际用例来看,单进程1秒钟大约能处理20万条数据,包括输入、输出和数据运算所有工作;在机器资源(CPU、内存)足够的情况下,利用多进程1秒钟可以处理几百万甚至千万、亿级别的数据,处理性能极高。
在介绍了本发明示例性实施方式的方法之后,接下来,参考图4至图5对本发明示例性实施方式的利用多线程的数据处理系统进行介绍。
利用多线程的数据处理系统的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”或“单元”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
基于同一发明构思,本发明还提出了一种利用多线程的数据处理系统,如图4所示,该系统包括:
队列设置模块410,用于设置环形存储区域,其中,所述环形存储区域包括原始数据队列及输出数据队列;
线程执行模块420,用于同时执行数据检索线程、数据计算线程及数据输出线程;其中,如图5所示,线程执行模块420包括:
数据检索线程执行单元4201,用于利用所述数据检索线程,读取原始数据,并将所述原始数据写入所述原始数据队列;
数据计算线程执行单元4202,用于利用所述数据计算线程,读取所述原始数据队列中的待读取数据,并进行处理得到处理结果,将处理结果写入所述输出数据队列;其中,所述原始数据队列中的待读取数据是已经写入完成的原始数据;
数据输出线程执行单元4203,用于利用所述数据输出线程,读取所述输出数据队列中的待读取数据,并进行输出;其中,所述输出数据队列中的待读取数据是已经写入完成的处理结果。
应当注意,尽管在上文详细描述中提及了利用多线程的数据处理系统的若干模块或单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
综上来看,本发明提出的利用多线程的数据处理方法及系统,使用无锁环形队列作为队列存储,每个元素数据配置标志位(四种标志位状态:待读取、读取中、待写入、写入中);按照入队、出队的速度预估队列大小来分配内存,以线性表方式实现环形队列,可根据索引ID迅速定位元素位置。
所用到的线程包含主启动线程和三个实际运行线程:数据检索线程、数据计算线程、数据输出线程,配置两个无锁环形队列,分为原始数据队列和输出数据队列。
该方法及系统的原理是检索线程、计算线程和输出线程同时运行不加任何同步机制(比如临界区、信号量、互斥锁等),检索线程读入数据的同时,计算线程已经在检查原始数据队列各个元素标志位,若遇到可读数据,则立即进行分析并输出数据到队列,输出线程同时已经在检索输出数据环形存储区,遇到可读数据,则立即输出。
如果数据计算较为简单,那么基本上整个数据处理完约等于数据输入输出的时间,数据计算部分所花时间基本无感,如果输入输出是读写文件,那么处理完整个流程约等于拷贝一个文件的时间,但是实际上在拷贝过程中,CPU的多个计算线程一直在高速计算中。
基于前述发明构思,如图6所示,本发明还提出了一种计算机设备600,包括存储器610、处理器620及存储在存储器610上并可在处理器620上运行的计算机程序630,所述处理器620执行所述计算机程序630时实现前述利用多线程的数据处理方法。
基于前述发明构思,还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现利用多线程的数据处理方法。
本发明提出的利用多线程的数据处理方法及系统能够处理单位时间内数据量超大的情况,环形队列内存空间可以重复利用,避免频繁内存分配和释放的开销,实现多线程真正并发运行,在处理过程中无锁、无临界区等限制条件,每个线程相互独立不受影响,处理性能极高。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (8)

1.一种利用多线程的数据处理方法,其特征在于,该方法包括:
设置两块环形存储区域,每一块环形存储区域具有一定的容量,所述容量根据预估的入队速度及出队速度进行设置;其中,第一块环形存储区域为原始数据队列;第二块环形存储区域为输出数据队列;所述原始数据队列及输出数据队列为无锁环形队伍;所述原始数据队列中包含K个元素,每个元素的标志位状态为:待读取、读取中、待写入或写入中;所述输出数据队列中包含L个元素,每个元素的标志位状态为:待读取、读取中、待写入或写入中;
同时执行数据检索线程、数据计算线程及数据输出线程;
利用所述数据检索线程,读取原始数据,并将所述原始数据写入所述原始数据队列;
利用所述数据计算线程,读取所述原始数据队列中的待读取数据,并进行处理得到处理结果,将所述处理结果写入所述输出数据队列;其中,所述原始数据队列中的待读取数据是已经写入完成的原始数据;
利用所述数据输出线程,读取所述输出数据队列中的待读取数据,并进行输出;其中,所述输出数据队列中的待读取数据是已经写入完成的处理结果。
2.根据权利要求1所述的利用多线程的数据处理方法,其特征在于,利用所述数据检索线程,读取原始数据,并写入所述原始数据队列,包括:
利用所述数据检索线程,读取原始数据,并依次检查所述原始数据队列中元素的标志位状态;
当遇到状态为待写入的元素,进行入队处理;
将所述原始数据写入至对应的元素,并将元素的标志位状态修改为写入中;
在写入完成后,将元素的标志位状态修改为待读取,并继续检查所述原始数据队列中元素的标志位状态。
3.根据权利要求2所述的利用多线程的数据处理方法,其特征在于,利用所述数据计算线程,读取所述原始数据队列中的待读取数据,并进行处理得到处理结果,将处理结果写入所述输出数据队列,还包括:
利用所述数据计算线程,依次检查所述原始数据队列中元素的标志位状态;
当遇到状态为待读取的元素,进行出队处理;
读取对应的元素中的待读取数据数据,并对读取到的数据进行分析处理得到处理结果;其中,在读取时,将元素的标志位状态修改为读取中;
利用所述数据计算线程,依次检查所述输出数据队列中元素的标志位状态;
当遇到状态为待写入的元素,进行入队处理;
将所述处理结果写入对应的元素,并将元素的标志位状态修改为写入中;
在写入完成后,将元素的标志位状态修改为待读取,并继续检查所述输出数据队列中元素的标志位状态;同时,清除所述原始数据队列中对应的元素的待读取数据,将元素的标志位状态修改为待写入,并继续检查所述原始数据队列中元素的标志位状态。
4.根据权利要求3所述的利用多线程的数据处理方法,其特征在于,利用所述数据输出线程,读取所述输出数据队列中的待读取数据,并进行输出,包括:
利用所述数据输出线程,依次检查所述输出数据队列中元素的标志位状态;
当遇到状态为待读取的元素,进行出队处理;
读取对应的元素中的所述待读取数据,并进行输出;其中,在读取时,将元素的标志位状态修改为读取中;
在输出完成后,清除所述输出数据队列中对应的元素的待读取数据,将元素的标志位状态修改为待写入,并继续检查所述输出数据队列中元素的标志位状态。
5.根据权利要求4所述的利用多线程的数据处理方法,其特征在于,该方法还包括:
在所述数据检索线程、数据计算线程及数据输出线程同时执行时,获取所述原始数据队列及所述输出数据队列的入队速度及出队速度;
当所述原始数据队列或所述输出数据队列的入队速度等于出队速度时,多线程正常工作;
当所述原始数据队列的入队速度大于出队速度时,优化所述数据计算线程的出队处理程序;
当所述输出数据队列的入队速度大于出队速度时,优化所述数据输出线程的出队处理程序;
当所述原始数据队列的入队速度小于出队速度时,休眠所述数据计算线程一定时间;
当所述输出数据队列的入队速度小于出队速度时,休眠所述数据输出线程一定时间。
6.一种利用多线程的数据处理系统,其特征在于,该系统包括:
队列设置模块,用于设置两块环形存储区域,每一块环形存储区域具有一定的容量,所述容量根据预估的入队速度及出队速度进行设置;其中,第一块环形存储区域为原始数据队列;第二块环形存储区域为输出数据队列;所述原始数据队列及输出数据队列为无锁环形队伍;所述原始数据队列中包含K个元素,每个元素的标志位状态为:待读取、读取中、待写入或写入中;所述输出数据队列中包含L个元素,每个元素的标志位状态为:待读取、读取中、待写入或写入中;
线程执行模块,用于同时执行数据检索线程、数据计算线程及数据输出线程;其中,
利用所述数据检索线程,读取原始数据,并将所述原始数据写入所述原始数据队列;
利用所述数据计算线程,读取所述原始数据队列中的待读取数据,并进行处理得到处理结果,将处理结果写入所述输出数据队列;其中,所述原始数据队列中的待读取数据是已经写入完成的原始数据;
利用所述数据输出线程,读取所述输出数据队列中的待读取数据,并进行输出;其中,所述输出数据队列中的待读取数据是已经写入完成的处理结果。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一所述方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至5任一所述方法。
CN201911272288.7A 2019-12-12 2019-12-12 一种利用多线程的数据处理方法及系统 Active CN111124641B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911272288.7A CN111124641B (zh) 2019-12-12 2019-12-12 一种利用多线程的数据处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911272288.7A CN111124641B (zh) 2019-12-12 2019-12-12 一种利用多线程的数据处理方法及系统

Publications (2)

Publication Number Publication Date
CN111124641A CN111124641A (zh) 2020-05-08
CN111124641B true CN111124641B (zh) 2023-10-31

Family

ID=70499636

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911272288.7A Active CN111124641B (zh) 2019-12-12 2019-12-12 一种利用多线程的数据处理方法及系统

Country Status (1)

Country Link
CN (1) CN111124641B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767154A (zh) * 2020-06-19 2020-10-13 北京思特奇信息技术股份有限公司 用于无阻塞通讯的无锁环形队列实现方法
CN111787185B (zh) * 2020-08-04 2023-09-05 成都云图睿视科技有限公司 一种vpu平台下的多路摄像头数据实时处理的方法
CN112256200A (zh) * 2020-10-21 2021-01-22 宝能(广州)汽车研究院有限公司 数据读写方法和存储介质
CN113590621B (zh) * 2021-07-26 2024-01-23 上海英方软件股份有限公司 一种数据库表比对方法及装置
CN114579053A (zh) * 2022-03-02 2022-06-03 统信软件技术有限公司 数据读写方法、装置、计算设备及存储介质
CN116149573B (zh) * 2023-04-19 2023-07-14 苏州浪潮智能科技有限公司 Raid卡集群对队列的处理方法、系统、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1757202A (zh) * 2002-08-13 2006-04-05 英特尔公司 自由表和环形数据结构管理
CN110362348A (zh) * 2018-04-09 2019-10-22 武汉斗鱼网络科技有限公司 一种队列存取数据的方法、装置及电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8387057B2 (en) * 2010-12-16 2013-02-26 Intel Corporation Fast and linearizable concurrent priority queue via dynamic aggregation of operations
US10713746B2 (en) * 2018-01-29 2020-07-14 Microsoft Technology Licensing, Llc FIFO queue, memory resource, and task management for graphics processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1757202A (zh) * 2002-08-13 2006-04-05 英特尔公司 自由表和环形数据结构管理
CN110362348A (zh) * 2018-04-09 2019-10-22 武汉斗鱼网络科技有限公司 一种队列存取数据的方法、装置及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王俊昌 ; 王振 ; 付雄 ; .基于无锁数据结构的FIFO队列算法.计算机工程.2018,(08),全文. *

Also Published As

Publication number Publication date
CN111124641A (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
CN111124641B (zh) 一种利用多线程的数据处理方法及系统
US6725457B1 (en) Semaphore enhancement to improve system performance
US9507652B2 (en) Synchronizing communication over shared memory
KR100501289B1 (ko) 입력/출력 서브-프로세서와의 비동기 인터페이스를 통한 입력/출력 성능 개선 방법
US8756613B2 (en) Scalable, parallel processing of messages while enforcing custom sequencing criteria
EP1271315A2 (en) Run queue management
US20080271042A1 (en) Testing multi-thread software using prioritized context switch limits
US20130191835A1 (en) Distributed processing device and distributed processing system
CN106095604A (zh) 一种多核处理器的核间通信方法及装置
US20160378565A1 (en) Method and apparatus for regulating processing core load imbalance
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
CN113568731B (zh) 一种任务调度方法、芯片以及电子设备
US10545890B2 (en) Information processing device, information processing method, and program
US11397560B2 (en) System and method for managing multi-core accesses to shared ports
KR20080105390A (ko) 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치
CN110609807B (zh) 用于删除快照数据的方法、设备和计算机可读存储介质
US11237994B2 (en) Interrupt controller for controlling interrupts based on priorities of interrupts
CN112948136A (zh) 一种嵌入式操作系统异步日志记录的实现方法
WO2018022303A1 (en) Capturing commands in a multi-engine graphics processing unit
US11068308B2 (en) Thread scheduling for multithreaded data processing environments
CN115129480B (zh) 标量处理单元的访问控制方法及标量处理单元
JP3456443B2 (ja) 並列ソート装置及び該装置のプログラムを記録した記録媒体
CN110955507B (zh) 基于vxWorks系统的多任务访问同一IIC总线的方法
US11829643B2 (en) Memory controller system and a method of pre-scheduling memory transaction for a storage device
US20230205579A1 (en) Apparatus for data processing for simultaneously preforming artificial intelligence function processing and data colletion and method therefor

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant