CN104572262B - 一种任务执行方法和装置 - Google Patents

一种任务执行方法和装置 Download PDF

Info

Publication number
CN104572262B
CN104572262B CN201410832194.1A CN201410832194A CN104572262B CN 104572262 B CN104572262 B CN 104572262B CN 201410832194 A CN201410832194 A CN 201410832194A CN 104572262 B CN104572262 B CN 104572262B
Authority
CN
China
Prior art keywords
subtask
buffering area
bit stream
task
mission bit
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
CN201410832194.1A
Other languages
English (en)
Other versions
CN104572262A (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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201410832194.1A priority Critical patent/CN104572262B/zh
Publication of CN104572262A publication Critical patent/CN104572262A/zh
Application granted granted Critical
Publication of CN104572262B publication Critical patent/CN104572262B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种任务执行方法和装置,其中的方法具体包括:将任务分解为多个子任务;将所述多个子任务及其对应任务信息写入缓冲区;以及利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。本发明实施例的多线程可以并行执行子任务对应的操作,因此,能够大大提升执行任务执行的效率。

Description

一种任务执行方法和装置
技术领域
本发明涉及网络通信技术领域,特别是涉及一种任务执行方法和装置。
背景技术
在网络通信领域,客户端经常存在向服务器发送多条数据的需求。
现有客户端向服务器发送多条数据的过程具体可以包括:首先向服务器发送一条数据,在接收到服务器返回的响应信息后,再向服务器发送下一条数据。然而,受网络延迟、网络堵塞等因素的影响,从向服务器发送一条数据,到服务器返回响应信息,需要经历较长的时间,在该时间内客户端需要等待,这无疑影响了数据传输的效率。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种任务执行方法和装置。
依据本发明的一个方面,提供了一种任务执行方法,包括:
将任务分解为多个子任务;
将所述多个子任务及其对应任务信息写入缓冲区;以及
利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。
可选地,所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程在处于空闲状态时,扫描所述缓冲区;以及
在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务。
可选地,所述任务信息包括:任务标识;
则所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程扫描所述缓冲区;
在扫描到新的子任务时,各线程判断所述新的子任务的任务标识与自身是否匹配;以及
在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务。
可选地,所述任务信息包括:任务标识;
则所述将所述多个子任务及其对应任务信息写入缓冲区的步骤,包括:
将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;
则所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程从对应子缓冲区中读取子任务及其对应任务信息,并依据所述子任务对应数据执行所述子任务。
可选地,所述子任务的任务标识与所述线程匹配包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识。
根据本发明的另一方面,提供了一种任务执行装置,包括:
分解模块,用于将任务分解为多个子任务;
写入模块,用于将所述多个子任务及其对应任务信息写入缓冲区;以及
执行模块,用于利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。
可选地,所述执行模块,包括:
第一扫描子模块,用于在各线程处于空闲状态时,扫描所述缓冲区;以及
第一读取子模块,用于在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务。
可选地,所述任务信息包括:任务标识;
则所述执行模块,包括:
第二扫描子模块,用于针对各线程扫描所述缓冲区;
判断子模块,用于在扫描到新的子任务时,针对各线程判断所述新的子任务的任务标识与自身是否匹配;以及
第二读取子模块,用于在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务。
可选地,所述任务信息包括:任务标识;
则所述写入模块,具体用于将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;
则所述执行模块,包括:
第三读取子模块,用于针对各线程从对应子缓冲区中读取子任务及其对应任务信息,并依据所述子任务对应数据执行所述子任务。
可选地,所述子任务的任务标识与所述线程匹配包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识。
根据本发明实施例的一种任务执行方法和装置,可以将负担较多同步操作的长任务分解为多个子任务,将所述多个子任务及其对应任务信息写入缓冲区,并利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务;因此,相对于现有方案执行一个同步操作并在等待结果返回后继续执行下一个同步操作,本发明实施例的多线程可以并行执行子任务对应的操作,因此,能够大大提升执行任务执行的效率。
并且,相对于现有方案在执行完一个同步操作后等待结果返回的操作,本发明实施例的单个线程在执行完一个同步操作后,无需等待即可继续执行下一个同步操作,等待结果返回的操作可由所述缓冲区的后台来执行,因此,节省等待结果返回的操作所花费的时间,从而能够进一步提高任务执行的效率
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文可选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出可选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种任务执行方法的步骤流程示意图;
图2示出了根据本发明一个实施例的一种缓冲区的结构示意图;
图3示出了根据本发明一个实施例的一种任务执行方法的步骤流程示意图;
图4示出了根据本发明一个实施例的一种任务执行方法的步骤流程示意图;
图5示出了根据本发明一个实施例的一种任务执行方法的步骤流程示意图;以及
图6示出了根据本发明一个实施例的一种任务执行装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,示出了根据本发明一个实施例的一种任务执行方法的步骤流程示意图,具体可以包括如下步骤:
步骤101、将任务分解为多个子任务;
步骤102、将所述多个子任务及其对应任务信息写入缓冲区;以及
步骤103、利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。
本发明实施例中,任务可以为负担较多同步操作的长任务,可以根据长任务的实际情况将其分解为多个子任务,例如将长任务中的一个同步操作对应一个子任务等等,本发明对将任务分解为多个子任务的具体方法不加以限制。任务信息可以包括任务标识、任务数据等信息,本发明实施例对具体的任务信息不加以限制。
本发明实施例中,缓冲区可用于存储多个子任务及其对应任务信息。参照图2,示出了根据本发明一个实施例的一种缓冲区的结构示意图,其具体可以包括写指针和读指针,其中,写指针可用于将所述子任务1、子任务2、子任务3等多个子任务及其对应任务信息写入缓冲区,读指针可用于从所述缓冲区读取子任务及其对应任务信息,在实际应用中,各线程可以通过所述读指针来实现子任务及其对应任务信息的读取,并依据所述子任务对应任务信息执行所读取的子任务。
以客户端向服务器发送多条数据的任务为例,可以将该任务分解为多个子任务,其中的一个子任务用于发送一条数据,那么,可以利用多线程来发送上述多条数据,假设多线程数目为N,则N个线程可以并行向服务器发送多条数据,因此,相对于现有方案中一次向服务器发送一条数据,能够大大提高数据传输的效率。并且,相对于现有方案在从向服务器发送一条数据到服务器返回响应信息这段时间内等待,本发明实施例的单个线程在向服务器发送一条数据后,无需等待即可继续向服务器发送下一条数据,从服务器接收响应信息的操作可由所述缓冲区的后台来执行,因此,能够进一步提高数据传输的效率。
上述客户端向服务器发送多条数据的任务涉及相同的向服务器发送一条数据的同步操作。可以理解,本发明实施例的任务还可以涉及不同的同步操作,如用户A从早晨起床到出门前要完成如下任务:叠被子用3分钟、刷牙和洗脸4分钟、做饭10分钟、吃早饭8分钟、整理书包2分钟等等,因此可以将上述任务分解为叠被子、刷牙、洗脸、做饭、吃早饭和整理书包等不同的同步操作,并利用多线程来并行执行所述不同的同步操作,从而提高任务执行效率。
综上,本发明实施例将负担较多同步操作的长任务分解为多个子任务,将所述多个子任务及其对应任务信息写入缓冲区,并利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务;相对于现有方案执行一个同步操作并在等待结果返回后继续执行下一个同步操作,本发明实施例的多线程可以并行执行子任务对应的操作,因此,能够大大提升执行任务执行的效率。并且,相对于现有方案在执行完一个同步操作后等待结果返回的操作,本发明实施例的单个线程在执行完一个同步操作后,无需等待即可继续执行下一个同步操作,等待结果返回的操作可由所述缓冲区的后台来执行,因此,节省等待结果返回的操作所花费的时间,从而能够进一步提高任务执行的效率。
在具体实现中,所述缓冲区具体可以包括:内存缓冲区和/或持久缓冲区。其中,所述内存缓冲区具有读写速度快的优点;所述持久缓冲区能够将数据持久化在文件中,从而能够保证重启同步操作后数据不丢失。在具体实现中,所述内存缓冲区可以用队列、链表等数据结构实现,本发明实施例对所述内存缓冲区的具体数据结构不加以限制。
在本发明的一种可选实施例中,所述将所述多个子任务及其对应任务信息写入缓冲区的步骤,可以进一步包括:将所述多个子任务及其对应任务信息循环写入所述缓冲区。本可选实施例可以在写入速度较快的情况下循环利用缓冲区,从而实现节省缓存资源的效果。在具体实现中,为了避免写入速度超过读取速度引起的数据丢失问题,在将所述多个子任务及其对应任务信息循环写入所述缓冲区之前,可以对写指针和读指针进行比较,如果写指针所指向的位置超出了读指针所指向的位置,则将所述多个子任务及其对应任务信息写入其它缓冲区,若写指针所指向的位置未超出读指针所指向的位置,则将所述多个子任务及其对应任务信息循环写入所述缓冲区。
本发明的另一种可选实施例中,所述缓冲区可以为持久缓冲区,所述持久缓存区可以进一步包括单位块;
则所述方法还可以包括:
将所述多个子任务及其对应任务信息写入所述持久缓存区中单位块后,针对所述单位块中内容生成相应的第一校验参数;
在从所述单位块中读取所述子任务及其对应任务信息后,针对所读取的任务生成相应的第二校验参数;
判断所述第二校验参数与所述第一校验参数是否一致;
在所述第二校验参数与所述第一校验参数一致时,执行所读取的任务;
在所述第二校验参数与所述第一校验参数不一致时,丢弃所读取的任务。
当数据存储在SSD(固态硬盘,Solid State Drives)等持久缓冲区中时,由于SSD中闪存块(block)的寿命是有限的,故SSD中难免会出现一些坏的闪存块,一旦闪存块成为坏块,则该闪存块中数据就将不可用。
为了避免坏块中数据不可用导致整个闪存块数据的不可用,本可选实施例在将所述多个子任务及其对应任务信息写入所述持久缓存区中单位块后,可以针对所述单位块中内容生成相应的第一校验参数,这样,在从所述单位块中读取所述子任务及其对应任务信息后,针对所读取的任务生成相应的第二校验参数,通过判断所述第一校验参数和第二校验参数是否一致来确定所述单位块是否损坏,在确定所述单位块损坏后,只是所述单位块的数据不可用,其它数据(如与所述单位块在同一闪存块的其它单位块的数据)还可以正常使用,因此能够提高存储数据的可靠性。
在具体实现中,可以采用MD5(信息摘要算法5,Message-Digest Algorithm 5)、DSA(数字签名算法,Digital Signature Algorithm)等认证算法生成所述第一校验参数和第二校验参数,本发明实施例对生成所述第一校验参数和第二校验参数的具体方法不加以限制。
另外,本领域技术人员可以根据实际情况确定所述单位块的大小,所述单位块的大小可以小于闪存块的大小,例如,SLC(单层单元,Single Layer Cell)中闪存块的大小为128kb,那么,所述单位块的大小可以为32kb等等,本发明实施例对所述单位块的大小不加以限制。
在本发明的再一种可选实施例中,所述任务信息具体可以包括:任务数据帧,其中,所述任务数据帧为子包对应的封装帧,所述子包为依据数据包分解得到,所述任务数据帧具体可以包括:子包在数据包中的编号、子包数据和数据包结束标识。本可选实施例中,在子任务对应的数据包较大(如128kb)而不符合传输要求时,可以将数据包分解为多个子包(32kb),并在每个子包的任务数据帧封装子包在数据包中的编号、子包数据和数据包结束标识等信息,从而能够保证数据包传输的完整性。
需要说明的是,为了提高数据的安全性,本发明实施例在将所述多个子任务及其对应任务信息写入缓冲区之前,可以将每个子任务及其对应任务信息进行加密处理,并且,在单个线程从所述缓冲区中读取子任务及其对应任务信息后可以对读取内容进行解密处理,本发明实施例对具体的加密算法和解密算法不加以限制。
参照图3,示出了根据本发明一个实施例的一种任务执行方法的步骤流程示意图,具体可以包括如下步骤:
步骤301、将任务分解为多个子任务;
步骤302、将所述多个子任务及其对应任务信息写入缓冲区;以及
步骤303、利用多线程依据所述子任务对应数据执行所述缓冲区中子任务;
其中,所述步骤303可以进一步包括:
子步骤331、各线程在处于空闲状态时,扫描所述缓冲区;以及
子步骤332、在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务。
相对于图1所示实施例,本实施例将利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的过程具体化为:各线程在处于空闲状态时,扫描所述缓冲区;以及在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务;由于处于空闲状态的线程可以无限制地从所述缓冲区中读取并执行子任务,因此,能够应用于对于多个子任务的执行顺序无要求的任务,能够实现多线程对于多个子任务的抢占式和连续执行,从而最大可能地提高任务的执行效率。
参照图4,示出了根据本发明一个实施例的一种任务执行方法的步骤流程示意图,具体可以包括如下步骤:
步骤401、将任务分解为多个子任务;
步骤402、将所述多个子任务及其对应任务信息写入缓冲区;其中,所述任务信息具体可以包括:任务标识;
步骤403、利用多线程依据所述子任务对应数据执行所述缓冲区中子任务;
其中,所述步骤403可以进一步包括:
步骤431、各线程扫描所述缓冲区;
步骤432、在扫描到新的子任务时,各线程判断所述新的子任务的任务标识与自身是否匹配;以及
步骤433、在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务。
相对于图1所示实施例,本实施例将利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的过程具体化为:各线程扫描所述缓冲区;在扫描到新的子任务时,各线程判断所述新的子任务的任务标识与自身是否匹配;以及在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务;由于在所述新的子任务的任务标识与自身的线程标识匹配时,各线程才能从所述缓冲区中读取并执行所述新的子任务,因此能够应用于对于多个子任务的执行顺序有要求的任务,从而能够在保证多个子任务的执行顺序的前提下,提高任务的执行效率。
以做菜任务为例,其具体可以包括如下有次序的操作:洗菜、切菜、点火、放油、翻炒、放佐料和盛菜等。为了按照预定顺序执行上述有次序的操作,在具体实现中,应按照预定顺序将所述多个子任务及其对应任务信息写入缓冲区,并且要求同一线程来执行上述有次序的操作。
本实施例通过子任务的任务标识与自身的线程标识匹配来保证同一线程执行对顺序有要求的子任务。在具体实现中,所述子任务的任务标识与所述线程匹配具体可以包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识。假设多线程数目为4,对应的线程标识分别为线程1、线程2、线程3和线程4,那么,为了将上述做菜任务的洗菜、切菜、点火、放油、翻炒、放佐料和盛菜等操作对应的子任务放至同一线程(假设线1)上执行,可以将上述做菜任务的一系列操作对应子任务的任务标识设置为1、5、9、13、17等等,从而能够保证上述各子任务的任务标识与线程1的线程标识匹配。
在实际应用中,可以设置所述缓冲区中数据的读取权限,当子任务的任务标识与某线程的线程标识匹配时,该线程才对该子任务具备读取权限,当然本发明实施例对允许或禁止线程读取子任务的具体方式不加以限制。
参照图5,示出了根据本发明一个实施例的一种任务执行方法的步骤流程示意图,具体可以包括如下步骤:
步骤501、将任务分解为多个子任务;
步骤502、将所述多个子任务及其对应任务信息写入缓冲区;其中,所述任务信息具体可以包括:任务标识;
其中,所述将所述多个子任务及其对应任务信息写入缓冲区的步骤502,具体可以包括:
子步骤521、将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;
步骤503、利用多线程依据所述子任务对应数据执行所述缓冲区中子任务;
其中,所述步骤503可以进一步包括:
子步骤531、各线程从对应子缓冲区中读取子任务及其对应任务信息,并依据所述子任务对应数据执行所述子任务。
相对于图4所示实施例通过子任务的任务标识与自身的线程标识匹配来保证同一线程执行对顺序有要求的子任务,本实施例针对各线程设置对应的子缓冲区,并将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;由于所述将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区能够将对顺序有要求的子任务放入同一线程的子缓冲区,这样,各线程只需从对应子缓冲区中读取并执行子任务即可,而无需进行是否匹配的判断操作,因此能够简化各线程的操作流程,提高各线程执行子任务的效率。
在具体实现中,所述子任务的任务标识与所述线程匹配具体可以包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图6,示出了根据本发明一个实施例的一种任务执行装置的结构示意图,具体可以包括如下模块:
分解模块601,用于将任务分解为多个子任务;
写入模块602,用于将所述多个子任务及其对应任务信息写入缓冲区;以及
执行模块603,用于利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。
在本发明的一种可选实施例中,所述执行模块603,具体可以包括:
第一扫描子模块,用于在各线程处于空闲状态时,扫描所述缓冲区;以及
第一读取子模块,用于在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务。
在本发明的另一种可选实施例中,所述任务信息具体可以包括:任务标识;
则所述执行模块603,可以进一步包括:
第二扫描子模块,用于针对各线程扫描所述缓冲区;
判断子模块,用于在扫描到新的子任务时,针对各线程判断所述新的子任务的任务标识与自身是否匹配;以及
第二读取子模块,用于在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务。
在本发明的再一种可选实施例中,所述任务信息具体可以包括:任务标识;
则所述写入模块603,可具体用于将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;
则所述执行模块603,具体可以包括:
第三读取子模块,用于针对各线程从对应子缓冲区中读取子任务及其对应任务信息,并依据所述子任务对应数据执行所述子任务。
在本发明的又一种可选实施例中,所述子任务的任务标识与所述线程匹配具体可以包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识。
在本发明的一种可选实施例中,所述写入模块603,具体可以包括:
循环写入子模块,用于将所述多个子任务及其对应任务信息循环写入所述缓冲区。
在本发明的另一种可选实施例中,所述缓冲区具体可以包括:内存缓冲区和/或持久缓冲区。
在本发明的再一种可选实施例中,所述缓冲区为持久缓冲区,所述持久缓存区具体可以包括单位块;
则所述装置还可以包括:
第一生成模块,用于将所述多个子任务及其对应任务信息写入所述持久缓存区中单位块后,针对所述单位块中内容生成相应的第一校验参数;
第二生成模块,用于在从所述单位块中读取所述子任务及其对应任务信息后,针对所读取的任务生成相应的第二校验参数;
判断模块,用于判断所述第二校验参数与所述第一校验参数是否一致;
第一执行模块,用于在所述第二校验参数与所述第一校验参数一致时,执行所读取的任务;以及
丢弃模块,用于在所述第二校验参数与所述第一校验参数不一致时,丢弃所读取的任务。
在本发明的又一种可选实施例中,所述任务信息具体可以包括:任务数据帧,其中,所述任务数据帧为子包对应的封装帧,所述子包为依据数据包分解得到,所述任务数据帧具体可以包括:子包在数据包中的编号、子包数据和数据包结束标识。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的任务执行方法和装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网平台上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种任务执行方法,包括:
将任务分解为多个子任务;
将所述多个子任务及其对应任务信息写入缓冲区;以及
利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。
A2、如A1所述的方法,所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程在处于空闲状态时,扫描所述缓冲区;以及
在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务。
A3、如A1所述的方法,所述任务信息包括:任务标识;
则所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程扫描所述缓冲区;
在扫描到新的子任务时,各线程判断所述新的子任务的任务标识与自身是否匹配;以及
在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务。
A4、如A1所述的方法,所述任务信息包括:任务标识;
则所述将所述多个子任务及其对应任务信息写入缓冲区的步骤,包括:
将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;
则所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程从对应子缓冲区中读取子任务及其对应任务信息,并依据所述子任务对应数据执行所述子任务。
A5、如A3或A4所述的方法,所述子任务的任务标识与所述线程匹配包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识。
A6、如权利要求A1或A2或A3或A4所述的方法,所述将所述多个子任务及其对应任务信息写入缓冲区的步骤,包括:
将所述多个子任务及其对应任务信息循环写入所述缓冲区。
A7、如A1或A2或A3或A4所述的方法,所述缓冲区包括:内存缓冲区和/或持久缓冲区。
A8、如A7所述的方法,所述缓冲区为持久缓冲区,所述持久缓存区包括单位块;
则所述方法还包括:
将所述多个子任务及其对应任务信息写入所述持久缓存区中单位块后,针对所述单位块中内容生成相应的第一校验参数;
在从所述单位块中读取所述子任务及其对应任务信息后,针对所读取的任务生成相应的第二校验参数;
判断所述第二校验参数与所述第一校验参数是否一致;
在所述第二校验参数与所述第一校验参数一致时,执行所读取的任务;以及
在所述第二校验参数与所述第一校验参数不一致时,丢弃所读取的任务。
A9、如A1或A2或A3或A4所述的方法,所述任务信息包括:任务数据帧,其中,所述任务数据帧为子包对应的封装帧,所述子包为依据数据包分解得到,所述任务数据帧包括:子包在数据包中的编号、子包数据和数据包结束标识。
本发明还公开了B10、一种任务执行装置,包括:
分解模块,用于将任务分解为多个子任务;
写入模块,用于将所述多个子任务及其对应任务信息写入缓冲区;以及
执行模块,用于利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。
B11、如B10所述的装置,所述执行模块,包括:
第一扫描子模块,用于在各线程处于空闲状态时,扫描所述缓冲区;以及
第一读取子模块,用于在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务。
B12、如B10所述的装置,所述任务信息包括:任务标识;
则所述执行模块,包括:
第二扫描子模块,用于针对各线程扫描所述缓冲区;
判断子模块,用于在扫描到新的子任务时,针对各线程判断所述新的子任务的任务标识与自身是否匹配;以及
第二读取子模块,用于在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务。
B13、如B10所述的装置,所述任务信息包括:任务标识;
则所述写入模块,具体用于将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;
则所述执行模块,包括:
第三读取子模块,用于针对各线程从对应子缓冲区中读取子任务及其对应任务信息,并依据所述子任务对应数据执行所述子任务。
B14、如B12或B13所述的装置,所述子任务的任务标识与所述线程匹配包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识。
B15、如B10或B11或B12或B13所述的装置,所述写入模块,包括:
循环写入子模块,用于将所述多个子任务及其对应任务信息循环写入所述缓冲区。
B16、如B10或B11或B12或B13所述的装置,所述缓冲区包括:内存缓冲区和/或持久缓冲区。
B17、如B16所述的装置,所述缓冲区为持久缓冲区,所述持久缓存区包括单位块;
则所述装置还包括:
第一生成模块,用于将所述多个子任务及其对应任务信息写入所述持久缓存区中单位块后,针对所述单位块中内容生成相应的第一校验参数;
第二生成模块,用于在从所述单位块中读取所述子任务及其对应任务信息后,针对所读取的任务生成相应的第二校验参数;
判断模块,用于判断所述第二校验参数与所述第一校验参数是否一致;
第一执行模块,用于在所述第二校验参数与所述第一校验参数一致时,执行所读取的任务;以及
丢弃模块,用于在所述第二校验参数与所述第一校验参数不一致时,丢弃所读取的任务。
B18、如B10或B11或B12或B13所述的装置,所述任务信息包括:任务数据帧,其中,所述任务数据帧为子包对应的封装帧,所述子包为依据数据包分解得到,所述任务数据帧包括:子包在数据包中的编号、子包数据和数据包结束标识。

Claims (16)

1.一种任务执行方法,包括:
将任务分解为多个子任务;
将所述多个子任务及其对应任务信息写入缓冲区;其中,所述缓冲区包括:内存缓冲区和/或持久缓冲区,并且所述缓冲区包括写指针和读指针,所述写指针可用于将所述多个子任务及其对应任务信息写入缓冲区,所述读指针可用于从所述缓冲区读取子任务及其对应任务信息,在将所述多个子任务及其对应任务信息写入缓冲区之前,可以对写指针和读指针进行比较,如果写指针所指向的位置超出了读指针所指向的位置,则将所述多个子任务及其对应任务信息写入其它缓冲区,若写指针所指向的位置未超出读指针所指向的位置,则将所述多个子任务及其对应任务信息循环写入所述缓冲区;
以及利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。
2.如权利要求1所述的方法,其特征在于,所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程在处于空闲状态时,扫描所述缓冲区;以及
在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务。
3.如权利要求1所述的方法,其特征在于,所述任务信息包括:任务标识;
则所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程扫描所述缓冲区;
在扫描到新的子任务时,各线程判断所述新的子任务的任务标识与自身是否匹配;以及
在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务。
4.如权利要求1所述的方法,其特征在于,所述任务信息包括:任务标识;
则所述将所述多个子任务及其对应任务信息写入缓冲区的步骤,包括:
将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;
则所述利用多线程依据所述子任务对应数据执行所述缓冲区中子任务的步骤,包括:
各线程从对应子缓冲区中读取子任务及其对应任务信息,并依据所述子任务对应数据执行所述子任务。
5.如权利要求3或4所述的方法,其特征在于,所述子任务的任务标识与所述线程匹配包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识。
6.如权利要求1或2或3或4所述的方法,其特征在于,所述将所述多个子任务及其对应任务信息写入缓冲区的步骤,包括:
将所述多个子任务及其对应任务信息循环写入所述缓冲区。
7.如权利要求1所述的方法,其特征在于,所述缓冲区为持久缓冲区,所述持久缓存区包括单位块;
则所述方法还包括:
将所述多个子任务及其对应任务信息写入所述持久缓存区中单位块后,针对所述单位块中内容生成相应的第一校验参数;
在从所述单位块中读取所述子任务及其对应任务信息后,针对所读取的任务生成相应的第二校验参数;
判断所述第二校验参数与所述第一校验参数是否一致;
在所述第二校验参数与所述第一校验参数一致时,执行所读取的任务;以及
在所述第二校验参数与所述第一校验参数不一致时,丢弃所读取的任务。
8.如权利要求1或2或3或4所述的方法,其特征在于,所述任务信息包括:任务数据帧,其中,所述任务数据帧为子包对应的封装帧,所述子包为依据数据包分解得到,所述任务数据帧包括:子包在数据包中的编号、子包数据和数据包结束标识。
9.一种任务执行装置,包括:
分解模块,用于将任务分解为多个子任务;
写入模块,用于将所述多个子任务及其对应任务信息写入缓冲区,其中,所述缓冲区包括:内存缓冲区和/或持久缓冲区,并且所述缓冲区包括写指针和读指针,所述写指针可用于将所述多个子任务及其对应任务信息写入缓冲区,所述读指针可用于从所述缓冲区读取子任务及其对应任务信息,在将所述多个子任务及其对应任务信息写入缓冲区之前,可以对写指针和读指针进行比较,如果写指针所指向的位置超出了读指针所指向的位置,则将所述多个子任务及其对应任务信息写入其它缓冲区,若写指针所指向的位置未超出读指针所指向的位置,则将所述多个子任务及其对应任务信息循环写入所述缓冲区;
以及执行模块,用于利用多线程依据所述子任务对应任务信息执行所述缓冲区中子任务。
10.如权利要求9所述的装置,其特征在于,所述执行模块,包括:
第一扫描子模块,用于在各线程处于空闲状态时,扫描所述缓冲区;以及
第一读取子模块,用于在扫描到新的子任务时,从所述缓冲区中读取并执行所述新的子任务。
11.如权利要求9所述的装置,其特征在于,所述任务信息包括:任务标识;
则所述执行模块,包括:
第二扫描子模块,用于针对各线程扫描所述缓冲区;
判断子模块,用于在扫描到新的子任务时,针对各线程判断所述新的子任务的任务标识与自身是否匹配;以及
第二读取子模块,用于在所述新的子任务的任务标识与自身的线程标识匹配时,从所述缓冲区中读取并执行所述新的子任务。
12.如权利要求9所述的装置,其特征在于,所述任务信息包括:任务标识;
则所述写入模块,具体用于将每个子任务写入与其对应任务标识相匹配的线程对应子缓冲区;
则所述执行模块,包括:
第三读取子模块,用于针对各线程从对应子缓冲区中读取子任务及其对应任务信息,并依据所述子任务对应数据执行所述子任务。
13.如权利要求11或12所述的装置,其特征在于,所述子任务的任务标识与所述线程匹配包括:所述子任务的任务标识对于多线程数目的取模结果等于所述线程的线程标识。
14.如权利要求9或10或11或12所述的装置,其特征在于,所述写入模块,包括:
循环写入子模块,用于将所述多个子任务及其对应任务信息循环写入所述缓冲区。
15.如权利要求9所述的装置,其特征在于,所述缓冲区为持久缓冲区,所述持久缓存区包括单位块;
则所述装置还包括:
第一生成模块,用于将所述多个子任务及其对应任务信息写入所述持久缓存区中单位块后,针对所述单位块中内容生成相应的第一校验参数;
第二生成模块,用于在从所述单位块中读取所述子任务及其对应任务信息后,针对所读取的任务生成相应的第二校验参数;
判断模块,用于判断所述第二校验参数与所述第一校验参数是否一致;
第一执行模块,用于在所述第二校验参数与所述第一校验参数一致时,执行所读取的任务;以及
丢弃模块,用于在所述第二校验参数与所述第一校验参数不一致时,丢弃所读取的任务。
16.如权利要求9或10或11或12所述的装置,其特征在于,所述任务信息包括:任务数据帧,其中,所述任务数据帧为子包对应的封装帧,所述子包为依据数据包分解得到,所述任务数据帧包括:子包在数据包中的编号、子包数据和数据包结束标识。
CN201410832194.1A 2014-12-27 2014-12-27 一种任务执行方法和装置 Active CN104572262B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410832194.1A CN104572262B (zh) 2014-12-27 2014-12-27 一种任务执行方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410832194.1A CN104572262B (zh) 2014-12-27 2014-12-27 一种任务执行方法和装置

Publications (2)

Publication Number Publication Date
CN104572262A CN104572262A (zh) 2015-04-29
CN104572262B true CN104572262B (zh) 2018-09-04

Family

ID=53088412

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410832194.1A Active CN104572262B (zh) 2014-12-27 2014-12-27 一种任务执行方法和装置

Country Status (1)

Country Link
CN (1) CN104572262B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325989A (zh) * 2016-08-17 2017-01-11 东软集团股份有限公司 任务执行方法及装置
CN107370639A (zh) * 2017-08-14 2017-11-21 苏州众天力信息科技有限公司 一种基于梯形时间算法的网关多场景控制方法
CN111037575B (zh) * 2020-03-13 2020-06-26 广东博智林机器人有限公司 机器人指令传输、处理方法、装置、电子设备及存储介质
CN112256208B (zh) * 2020-11-02 2023-07-28 南京云信达科技有限公司 一种离线数据包存储分析方法及装置
CN113407328B (zh) * 2021-07-14 2023-11-07 厦门科灿信息技术有限公司 多线程数据处理方法、装置、终端及采集系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101534213A (zh) * 2009-04-09 2009-09-16 成都市华为赛门铁克科技有限公司 一种日志的获取方法及日志服务器
EP2434401A1 (en) * 2009-06-30 2012-03-28 ZTE Corporation Method and system for managing thread pool
CN102833336A (zh) * 2012-08-31 2012-12-19 河海大学 分散分布式信息采集与并发处理系统中数据分包处理方法
CN102902512A (zh) * 2012-08-31 2013-01-30 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法
CN103578565A (zh) * 2012-07-19 2014-02-12 百富计算机技术(深圳)有限公司 一种NAND Flash存储芯片的校验方法及装置
CN104238999A (zh) * 2013-06-09 2014-12-24 阿里巴巴集团控股有限公司 一种基于水平分区分布式数据库的任务调度方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101534213A (zh) * 2009-04-09 2009-09-16 成都市华为赛门铁克科技有限公司 一种日志的获取方法及日志服务器
EP2434401A1 (en) * 2009-06-30 2012-03-28 ZTE Corporation Method and system for managing thread pool
CN103578565A (zh) * 2012-07-19 2014-02-12 百富计算机技术(深圳)有限公司 一种NAND Flash存储芯片的校验方法及装置
CN102833336A (zh) * 2012-08-31 2012-12-19 河海大学 分散分布式信息采集与并发处理系统中数据分包处理方法
CN102902512A (zh) * 2012-08-31 2013-01-30 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法
CN104238999A (zh) * 2013-06-09 2014-12-24 阿里巴巴集团控股有限公司 一种基于水平分区分布式数据库的任务调度方法及装置

Also Published As

Publication number Publication date
CN104572262A (zh) 2015-04-29

Similar Documents

Publication Publication Date Title
CN104572262B (zh) 一种任务执行方法和装置
CN104571958B (zh) 一种任务执行方法和装置
US20180321996A1 (en) Micro- service framework derived from third-party apps
KR101971389B1 (ko) 연합 기반 메모리 관리
CN103164268B (zh) 系统优化方法及装置
US10372479B2 (en) Scheduling framework for tightly coupled jobs
CN107450971A (zh) 任务处理方法及装置
RU2013128537A (ru) Система и способ управления проектами
CN107025256B (zh) 用于减少基于云的服务的重新激活时间的方法和系统
US9454375B2 (en) Parallel program analysis and branch prediction
US10951570B2 (en) Preventing a user from missing unread documents
US20140130014A1 (en) Generating test plans and test cases from service-oriented architecture and process models
CN105095077B (zh) 用户界面自动化测试方法和装置
US20130132961A1 (en) Mapping tasks to execution threads
US10310909B2 (en) Managing execution of computer operations with non-competing computer resource requirements
US11061746B2 (en) Enqueue-related processing based on timing out of an attempted enqueue
CN115373822A (zh) 任务调度方法、任务处理方法、装置、电子设备和介质
CN110069217A (zh) 一种数据存储方法及装置
GB2525613A (en) Reduction of processing duplicates of queued requests
US9766940B2 (en) Enabling dynamic job configuration in mapreduce
CN105429733B (zh) 一种信息调度发送方法和装置
US10078572B1 (en) Abnormal timing breakpoints
CN105260233A (zh) 一种应用容器的创建方法和装置
US20200241931A1 (en) Supporting speculative microprocessor instruction execution
US20180159720A1 (en) Dynamic agent deployment in a data processing system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220714

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.