[发明专利]保障多线程任务有序执行的装置及方法在审
申请号: | 201210445973.7 | 申请日: | 2012-11-09 |
公开(公告)号: | CN103810072A | 公开(公告)日: | 2014-05-21 |
发明(设计)人: | 詹姆斯·建俊·吴;朱友志;徐新 | 申请(专利权)人: | 上海飞田通信技术有限公司 |
主分类号: | G06F11/28 | 分类号: | G06F11/28 |
代理公司: | 上海浦一知识产权代理有限公司 31211 | 代理人: | 刘昌荣 |
地址: | 201203 上海市浦东新*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 保障 多线程 任务 有序 执行 装置 方法 | ||
技术领域
本发明涉及通信领域,特别是涉及一种保障多线程任务有序执行的装置及方法。
背景技术
对于单线程任务的执行,可以保证执行的顺序按照任务的写入顺序。但是,当我们需要多线程去执行多个任务时,由于CPU每一个时刻只能执行一项任务,而操作系统分配给每个线程的执行时间可能不一致,因此就不能保证最终执行任务的顺序与任务写入的顺序一致。例如,我们建了一个包含4个线程的线程池和4个队列,然后通过外部接口不断地向4个队列中随机地写入任务,线程池中空闲的线程就会随机地去读取4个队列中的任务,这样,我们通过接口顺序写入的任务可能是随机写入到队列中的,但是在最终执行时我们却没有办法去决定每个队列中任务的执行顺序,从而可能会出现后写入的任务先于先写入的任务执行的情况。
发明内容
本发明要解决的技术问题之一是提供一种保障多线程任务有序执行的装置,它可以保证多线程任务的执行顺序与写入顺序一致。
为解决上述技术问题,本发明的保障多线程任务有序执行的装置,包括以下结构:
接口,用于应用方向多队列线程池应用模块写入任务;
多队列线程池应用模块,用于创建和管理线程池,控制线程池中线程的个数、队列的个数以及线程池中每一个线程执行的对应队列;所述多队列线程池应用模块进一步包括接口调用模块、任务注册模块和任务执行模块;其中,接口调用模块用于任务的写入;任务注册模块用于将接口调用模块写入的任务按照任务的标识注册到队列中;任务执行模块用于指示线程按照任务的注册顺序读取对应队列中的任务。
本发明要解决的技术问题之二是提供一种基于上述装置的保障多线程任务有序执行的方法。
为解决上述技术问题,本发明的保障多线程任务有序执行的方法,包括以下步骤:
1)创建多队列线程池,确定线程池中线程的个数、队列的个数,并将线程池中的每一个线程与一个队列相对应,每个线程只能读取它所对应的队列中的任务;
2)应用方通过接口向多队列线程池写入任务;
3)任务注册模块将步骤2)写入的任务按照任务的标识进行注册,将具有相同标识的任务写入到同一队列中;
4)线程池中的线程读取该线程对应的队列,按照任务的注册顺序执行该队列中的任务。
本发明通过引入多队列线程池,并使线程与队列一一对应,同时将任务数据按标识归类写入相应队列中,这样,线程就会按照任务的写入顺序有序地执行任务,从而保障了多队列线程池任务的有序执行以及数据的完整性。
附图说明
图1是本发明实施例的装置的模块结构示意图。
图2是本发明实施例的方法流程示意图。
具体实施方式
为对本发明的技术内容、特点与功效有更具体的了解,现结合图示的实施方式,详述如下:
如图1所示,本实施例的保障多线程任务有序执行的装置,主要包括以下结构:
接口,用于应用方向多队列线程池应用模块写入任务。
多队列线程池应用模块,用于创建和管理线程池,控制线程池中线程的个数、队列的个数以及线程池中每一个线程执行的对应队列。该多队列线程池应用模块进一步包括有接口调用模块、任务注册模块、任务执行模块以及统计模块。其中,接口调用模块用于任务的写入;任务注册模块用于将接口调用模块写入的任务根据具体任务的标识注册到队列中;任务执行模块用于指示线程按照任务的注册顺序读取对应队列中的任务;统计模块用于统计每个任务执行的时长以及具有同一标识的任务的数量。
基于上述装置的保障多线程任务有序执行的方法,其具体处理流程如下(参见图2):
首先,根据需要创建多队列线程池,确定线程池中线程的个数、队列的个数,并将线程池中的每一个线程与一个对列对应起来。例如,创建3个线程的线程池,同样创建3个队列与3个线程一一对应。每个线程只能读取它所对应的队列中的任务。
然后,应用方通过接口向多队列线程池写入任务数据。任务数据写入后,任务注册模块将这些写入的任务按照任务的标识进行注册,即将具有相同标识的任务写入到同一队列中。
线程池中的线程读取该线程对应的队列,按照任务的注册顺序执行该队列中的任务。由于具有同一标识的任务被注册到了同一队列中,而线程与队列是一一对应的,这样,同一标识的任务在写出的时候就保持了和写入的顺序的一致性。
最后,由统计模块统计线程读取和执行每个任务的时长,以及具有同一标识的任务的数量。
上述任务标识,可以根据具体的实施情况确定。例如,在一个实施例中,有多个应用方在向多队列线程池写入任务,则任务标识可以是应用方代码;而在另一个实施例中,应用方只有一个,但是该应用方有多台终端(例如GPS终端)在同时向多队列线程池写入任务,则任务标识可以是终端号。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海飞田通信技术有限公司,未经上海飞田通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210445973.7/2.html,转载请声明来源钻瓜专利网。