本发明专利技术公开了一种异步任务处理方法。首先将任务拆分为至少两个子任务,根据每个子任务对应的代码段生成一个对象,将对象按预定顺序放入临时队列;然后,执行上述临时队列中的各对象。本发明专利技术还公开了一种异步任务处理装置。采用本发明专利技术公开的异步任务处理方法和装置,能够提高任务的处理效率。
【技术实现步骤摘要】
本专利技术涉及计算机应用技术,特别是涉及一种异步任务处理方法和装置。
技术介绍
通常的输入输出(Input/Output,简称I/O)操作具有速度慢、不可预见的特点。如 果应用程序采用同步任务处理方法来执行I/O操作,则会放弃对正在完成实际工作的设备 的控制。例如,在应用程序从网络上获取数据的应用中,由于获取数据的速度以及是否能够 成功获取数据均与网络情况有关,所以无法预计该应用程序需要多长时间才能返回,导致 长时间放弃对设备的控制。因此,采用同步任务处理方法无法实现对设备的正确控制,需要 采用异步任务处理方法来执行I/O操作。目前的异步任务处理方法中,将一个任务的应用程序拆分成多个代码段。上述多 个代码段中,至少包括以下两个代码段一段用于发起异步请求,另一段用于异步完成后的 结果回调。然后,按照一定顺序,将上述多个代码段分别通过多个线程执行,每个线程执行 一个代码段。采用上述现有的异步任务处理方法,由于通过多个不同的代码段实现,上述多个 代码段分别在不同的线程中执行,各个代码段中分别采用不同的变量,因此,在多线程中共 享中间数据时,通常都通过参数传递的方式实现,存在数据共享操作复杂且效率低下的问 题。另外,在处理异常以及释放资源时,需要在多个代码段中分别设置异常处理和资源释放 操作,实现方式复杂,无法实现统一的异常处理和资源释放。总之,现有的异步任务处理方 法,存在对数据共享、异常处理和资源释放等操作均无法实现统一控制,从而导致处理复杂 且效率低下的问题。
技术实现思路
本专利技术提供了一种异步任务处理方法和装置,用以提高异步任务处理技术的处理 效率、降低其处理复杂度。为达到上述目的,本专利技术的技术方案是这样实现的本专利技术提供了一种异步任务处理方法,包括将任务拆分为至少两个子任务;根据每个子任务对应的代码段生成一个对象,将所述对象按预定顺序放入临时队 列;执行所述临时队列中的各对象。所述执行所述临时队列中的各对象包括在同一线程中执行所述临时队列中的全部对象。所述根据每个子任务对应的代码段生成一个对象包括将每个子任务对应的代码 段在内存中的入口地址和该代码段的描述信息设置在对象中,并为该对象设置指针指向用 于存放执行结果的内存位置;所述执行所述临时队列中的各对象包括根据各对象中的所述入口地址,执行该 入口地址对应的代码段;将当前对象的执行结果存储到所述指针指向的内存位置。所述至少两个子任务包括发起异步请求子任务和结果回调子任务;所述按预定顺序放入临时队列包括所述发起异步请求子任务对应的对象位于所 述结果回调子任务对应的对象之前。所述按预定顺序放入临时队列还包括在每一个所述对象之后设置“yield return”语句,用以标识当前对象执行完毕并 启动执行下一个对象。所述方法还包括对临时队列中的各对象执行过程进行统一的异常处理,具体包 括在所述执行所述临时队列中的各对象之前插入异常捕获操作;在所述执行所述临 时队列中的各对象之后插入异常处理操作;则在所述执行所述临时队列中的各对象过程中,监控并捕获异常情况;当捕获到 异常情况时,进行异常处理,结束。所述执行所述临时队列中的各对象之后,还包括对所述临时队列中的各对象统一进行资源释放。一种异步任务处理装置,包括任务设置单元,用于将任务拆分为至少两个子任务,根据每个子任务对应的代码 段生成一个对象,将所述对象按预定顺序放入临时队列;任务执行单元,用于执行所述临时队列中的各对象。所述任务设置单元具体用于将任务拆分为至少两个子任务;将每个子任务对应的 代码段在内存中的入口地址和该代码段的描述信息设置在对象中,并为该对象设置指针指 向用于存放执行结果的内存位置;将所述对象按预定顺序放入临时队列;所述任务设置单元还用于在每一个所述对象之后设置“yield return”语句,用以 标识当前对象执行完毕并启动执行下一个对象;所述任务执行单元具体用于根据各对象中的入口地址,执行该入口地址对应的代 码段;将当前对象的执行结果存储到当前对象的指针指向的内存位置。所述装置还包括异常处理单元,用于对临时队列中的各对象执行过程进行统一的异常处理;具体 包括异常捕获模块,用于在执行所述临时队列中的各对象之前插入异常捕获操作,用 以在执行所述临时队列中的各对象过程中监控并捕获异常情况;和异常处理模块,用于在执行所述临时队列中的各对象之后插入异常处理操作;, 在执行所述临时队列中的各对象过程中监控并捕获异常情况,当所述异常捕获模块捕获到 异常情况时,进行异常处理,结束;和/ 或,资源释放单元,用于对所述临时队列中的各对象统一进行资源释放。由上述可见,将一个任务对应的全部代码拆分成多个代码段,将多个代码段对应 的对象放置在临时队列中,通过执行该临时队列实现在一个线程中统一执行上述多个对象对应的代码段。因此可以在该线程中通过变量进行数据共享,数据共享的效率高,并且可以 很简单直观的通过对该临时队列统一进行异常处理和/或资源释放来实现对多个代码段 进行统一的异常处理和/或资源释,从而能够简化处理过程且提高任务的处理效率。附图说明图1是本专利技术实施例一的异步任务处理方法的流程图2是本专利技术实施例二的异步任务处理方法的流程图3是本专利技术实施例三的异步任务处理装置的结构示意图。具体实施方式为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对 本专利技术进行详细描述。本专利技术的基本思想是将一个任务对应的全部代码拆分成多个代码段,将多个代 码段放置在临时队列中,通过执行该临时队列来统一执行上述多个代码段。以下通过本发 明实施例一至本专利技术实施例三对本专利技术提出的异步任务处理方法和装置进行详细说明。图1是本专利技术实施例一的异步任务处理方法的流程图。如图1所示,该方法包括 如下过程。步骤101 :将任务拆分为至少两个子任务。步骤102 :根据每个子任务对应的代码段生成一个对象,将该至少两个对象按预 定顺序放入临时队列。在步骤101和步骤102中,首先,将一个任务对应的全部代码拆分成至少2个代码 段,每个代码段对应临时队列中的一个对象。较佳地,可以以该任务中的各子任务来划分代 码段,将该任务中的每一个子任务对应的代码分别作为一个代码段,比如该子任务可以是 用于发起异步请求的子任务对应的代码段。相应地,还可以是用于结果回调的子任务对应 的代码段。进一步地,还可以包括用于其它操作的子任务对应的代码段,等等。然后,将上 述拆分获得的多个代码段对应的多个对象放置到临时队列中。较佳地,可以按照各个对象 对应的代码段在该任务的全部代码中的顺序,将上述多个对象排列在临时队列中。按照上 述设置方法进行设置后,临时队列中包括至少2个对象,每个对象对应一个代码段,该临时 队列的至少2个对象对应的至少2个代码段组成上述任务对应的代码。步骤103 :执行上述临时队列中的各对象。在本步骤中,通过执行该临时队列,对上述排列在该临时队列中的多个对象实现 统一执行。较佳地,在执行该临时队列时,在一个线程中按照队列的先入先出原则执行上述 临时队列中的各对象。以上通过本专利技术实施例一对本专利技术的异步任务处理方法进行了简要介绍,以下进 一步通过本专利技术实施例二详细说明本专利技术的异步任务处理方法。图2是本专利技术实施例二的异步任务处理方法的流程图。如图2所示,该本文档来自技高网...
【技术保护点】
一种异步任务处理方法,其特征在于,包括:将任务拆分为至少两个子任务;根据每个子任务对应的代码段生成一个对象,将所述对象按预定顺序放入临时队列;执行所述临时队列中的各对象。
【技术特征摘要】
1.一种异步任务处理方法,其特征在于,包括将任务拆分为至少两个子任务;根据每个子任务对应的代码段生成一个对象,将所述对象按预定顺序放入临时队列;执行所述临时队列中的各对象。2.根据权利要求1所述的方法,其特征在于,所述执行所述临时队列中的各对象包括在同一线程中执行所述临时队列中的全部对象。3.根据权利要求1所述的方法,其特征在于,所述根据每个子任务对应的代码段生成一个对象包括将每个子任务对应的代码段在内存中的入口地址和该代码段的描述信息设置在对象中,并为该对象设置指针指向用于存放执行结果的内存位置;所述执行所述临时队列中的各对象包括根据各对象中的所述入口地址,执行该入口地址对应的代码段;将当前对象的执行结果存储到所述指针指向的内存位置。4.根据权利要求1至3中任意一项所述的方法,其特征在于,所述至少两个子任务包括发起异步请求子任务和结果回调子任务;所述按预定顺序放入临时队列包括所述发起异步请求子任务对应的对象位于所述结果回调子任务对应的对象之前。5.根据权利要求1至3中任意一项所述的方法,其特征在于,所述按预定顺序放入临时队列还包括在每一个所述对象之后设置“yield return”语句,用以标识当前对象执行完毕并启动执行下一个对象。6.根据权利要求1至3中任意一项所述的方法,其特征在于,所述方法还包括对临时队列中的各对象执行过程进行统一的异常处理,具体包括在所述执行所述临时队列中的各对象之前插入异常捕获操作;在所述执行所述临时队列中的各对象之后插入异常处理操作;则在所述执行所述临时队列中的各对象过程中,监控并捕获异常情况;当捕获到异常情况时,进行异常处理...
【专利技术属性】
技术研发人员:何庆明,
申请(专利权)人:北京新媒传信科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。