[发明专利]一种通用异步任务执行方法及装置在审
申请号: | 201810968124.7 | 申请日: | 2018-08-23 |
公开(公告)号: | CN109358917A | 公开(公告)日: | 2019-02-19 |
发明(设计)人: | 胡海;周平 | 申请(专利权)人: | 贵阳朗玛信息技术股份有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 贵阳睿腾知识产权代理有限公司 52114 | 代理人: | 谷庆红 |
地址: | 550022 贵州省贵阳市贵阳国家高新技术产业*** | 国省代码: | 贵州;52 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 任务执行 线程 任务队列 通用 封装 通用异步 线程执行 耦合 调用 解开 取出 | ||
本发明公开了一种通用异步任务执行方法及装置,其方法主要包括:将异步任务封装为通用任务,并将所述通用任务加入任务队列;调用任务执行线程,并利用所述任务执行线程从所述任务队列中取出所述通用任务;解开所述通用任务的封装,获得所述异步任务,并利用所述任务执行线程执行所述异步任务;所述执行所述异步任务完毕之后,将所述任务队列中的所述通用任务消除。本发明的异步任务线程可以把任意的“任务”抛到该线程去执行,通过合理的封装,避免了异步任务线程类和具体任务的耦合,可以适用于不同类型的异步任务。
技术领域
本发明涉及一种异步任务的执行方法及装置。
背景技术
一个计算机系统处理外部请求的方式主要有两种:同步处理和异步处理。
两种处理方式分别有各自的好处,本申请主要针对异步处理,由于请求被转换为了消息,消息转换并缓存后请求操作即结束,不再需要任何等待,系统内部会进一步对各个消息进行处理,等处理完以后再通过回调通知的方式告知请求者处理结果。
现有任务执行类线程大多与具体任务关联,没有把线程和任务完全的抽象出来。大多数设计的异步任务线程都是“专用”线程,线程设计时只考虑执行“某一种”任务,外部需要提供的是执行任务所需的各种数据或者信息,然后通知到异步任务线程,待其执行。线程的功能有很大的局限性,每次有不同类型的“任务”都要重新设计线程,使得开发工作有许多重复。
现有异步任务执行线程大多是单独工作的,没有有效利用多线程来提高任务执行的并行性。
发明内容
本发明针对现有异步任务线程类和具体任务耦合的问题,将具体任务封装为通用任务,可为任意的异步任务执行提供可能。
本发明的技术方案是:
一种通用异步任务执行方法,包括:将异步任务封装为通用任务,并将所述通用任务加入任务队列;
调用任务执行线程,并利用所述任务执行线程从所述任务队列中取出所述通用任务;
解开所述通用任务的封装,获得所述异步任务,并利用所述任务执行线程执行所述异步任务;
所述执行所述异步任务完毕之后,将所述任务队列中的所述通用任务消除。。
为所述异步任务创建一个任务观察者标识并封装为通用标识,所述任务观察者标识为未执行时通知任务队列将通用任务加入任务队列,当任务观察者标识收到执行结果后将任务从任务队列中删除。
任务执行线程运行时,从任务队列队首获取通用任务,然后再执行通用任务对应的异步任务。
任务执行线程终止运行时,任务队列不再接收新的异步任务,任务执行线程将已在队列中的任务执行完毕后再终止运行。
异步任务封装进任务队列时选择排在队首或者队尾。
异步任务封装后先进入分配队列,分配队列寻找任务队列为空的任务执行线程进行任务分配。
分配队列取出队首的通用任务,寻找任务队列为空的线程,将通用任务分配到该线程,如果没有任务队列为空的线程将任务放回队首。
当任务执行线程的任务队列为空时,发出待接收任务的信号,分配队列将队首的任务分配给该线程。
分配队列中的通用任务有一个分配任务观察者标识,分配任务观察者标识为已分配时将通用任务从分配队列中消除。
一种通用异步任务执行装置,包括:
通用任务单元,用于封装异步任务为通用任务;
通用观察者单元,用于封装异步任务的执行任务观察者标识,执行任务观察者标识表达异步任务的执行状态;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于贵阳朗玛信息技术股份有限公司,未经贵阳朗玛信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810968124.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:嵌入式系统的启动方法及装置
- 下一篇:一种新型底层硬件屏蔽系统