发明名称 一种基于多线程的卫星数据产品生产任务并行调度方法
摘要 一种基于多线程的卫星数据产品生产任务并行调度方法,包括:为待调度执行的任务设置优先级并实现统一接口;将任务按照优先级由高到底的顺序加入到优先级队列;设置线程池的任务最大数量,最小数量和线程的最长空闲时间;启动线程池中的守护线程和多个任务线程执行任务,守护线程根据任务量情况动态调整任务线程的数量。本发明能够合理利用系统资源,针对卫星地面应用系统的数据产品生产,解决了产品生产流程复杂、任务执行时间长、任务量大、任务调度实时性、并行度高等难点。
申请公布号 CN101739293B 申请公布日期 2012.09.26
申请号 CN200910243098.2 申请日期 2009.12.24
申请人 航天恒星科技有限公司 发明人 李颖;孙晓良;石贞云;梁洁雯;刘华
分类号 G06F9/46(2006.01)I;G06F9/50(2006.01)I 主分类号 G06F9/46(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 安丽
主权项 一种基于多线程的卫星数据产品生产任务并行调度方法,其特征在于:包括任务生成、优先级队列管理、线程池创建、线程池管理4个部分,实现如下:(1)任务生成:根据卫星数据产品数据要求,生成任务并确定任务的优先级和任务在优先级队列中的最长等待时间;(2)优先级队列管理:根据步骤(1)确定的任务优先级和优先级别数量,创建相应优先级别和优先级数量的线程安全的队列,将待执行的任务按照其优先级的级别插入到相应的队列中,并为任务增加一个时间戳,记录该任务加入到队列的时间,在任务调度过程中,检查非最高优先级队列中每个任务的等待时间,如果超过步骤(1)中的最长等待时间而该任务仍未被执行,则将该任务转移到上一级优先级更高的队列中并更改时间戳,以防止低优先级的任务长时间得不到执行;(3)创建线程池:将线程分为守护线程和任务线程,根据系统CPU的数量、任务的I/O等待时间和任务生成频率确定任务线程的最大数量和最小数量,并设置任务线程的最长空闲时间,根据任务线程的最小数量创建并启动相应数量的任务线程,任务线程的状态分为Ready态、空闲态、运行态和终结态四种状态,并为每个任务线程分配唯一的ID,任务线程按照优先级由高到低的顺序从优先级队列中取出任务进行执行;创建并启动唯一的守护线程,并由守护线程生成任务线程状态表,用于调整和控制线程池中任务线程的数量和状态;(4)线程池管理:守护线程维护线程池中任务线程的数量和任务线程状态表,记录和控制任务线程状态的变化,如果有新任务加入到优先级队列,而当前无空闲的任务线程,并且任务线程总数小于设定的任务最大线程数量,则守护线程负责创建新的任务线程执行任务;如果所有优先级队列为空,即无需要执行的任务,任务线程将进入空闲状态,并通过两种方式转变为终结态:第一种方式是空闲状态超过设定的最长空闲时间,则自动结束转变为终结态;第二 种方式是守护线程扫描所有的空闲线程,由守护线程结束任务线程将其转变为终结态,但守护线程要保证线程池中任务线程的数量不少于设定的任务线程最小数量;所述步骤(3)中最大线程数量的确定为N*(1+Tw/Ts),最小线程数量确定为Fc*(Tw+Ts),Tw为任务的I/O等待时间,单位为秒,Ts为真正占用CPU的时间,单位为秒,N为系统CPU的数量,Fc为任务生成频率,任务线程的最长空闲时间设定为1/Fc,单位:秒。
地址 100086 北京市海淀区知春路82号院