一种基于多线程任务的调度执行方法、装置和介质制造方法及图纸

技术编号:26030650 阅读:22 留言:0更新日期:2020-10-23 21:08
本发明专利技术实施例公开了一种基于多线程任务的调度执行方法、装置和介质,将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列;利用预先设定的工作线程更新全局时间计数器,并将全局时间计数器记录的当前时间作为所有局部时间计数器的初始时间。当第一个定时器事件的局部时间计数器记录的当前时间达到第一个定时器事件对应的任务执行时间时,则利用相应的工作线程执行第一个定时器事件所对应的待处理任务;将第一个定时器事件的局部时间计数器记录的当前时间作为下一个定时器事件的初始时间,直至轮询完任务队列中的所有定时器事件,则结束操作。在不增加成本的前提下,解决了多线程任务调度执行过程中的时钟同步问题。

【技术实现步骤摘要】
一种基于多线程任务的调度执行方法、装置和介质
本专利技术涉及存储系统
,特别是涉及一种基于多线程任务的调度执行方法、装置和计算机可读存储介质。
技术介绍
随着存储系统要处理的IO请求(即所要执行的任务)越来越多,对存储系统的性能要求也越来越高。在所要执行的任务越来越多的情况下,为了提高任务处理性能,目前,常采用的方法是创建尽可能多的线程来增加并发度。多线程任务调度执行应用背景下,定时器处理模式的选择与设计则显得尤为关键。现有的计算机多节点系统中,普遍采用硬件和软件两种思路实现定时器功能。硬件方式可以包括卫星信号定时和电子器件脉冲定时,但是硬件方式需另外购进第三方设备合入系统,增加了建设成本,并且增加了系统搭建的复杂度。为了降低建设成本,以多媒体定时器为代表的软件定时器成为一个应用范围较大的思路。软件定时器依赖于操作系统,精确性高,但严重受时区和系统时钟修改影响。在性能要求稳定的存储系统领域,现有的软件定时器思路不是很好的选择。可见,如何在不增加成本的前提下,解决多线程任务调度执行过程中的时钟同步问题,是本领域技术人员需要解决的问题。
技术实现思路
本专利技术实施例的目的是提供一种基于多线程任务的调度执行方法、装置和计算机可读存储介质,可以在不增加成本的前提下,解决多线程任务调度执行过程中的时钟同步问题。为解决上述技术问题,本专利技术实施例提供一种基于多线程任务的调度执行方法,包括:将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列;其中,每个定时器事件有其对应的一个局部时间计数器以及工作线程;利用预先设定的工作线程更新全局时间计数器,并将所述全局时间计数器记录的当前时间作为所有所述定时器事件的局部时间计数器的初始时间;当第一个定时器事件的局部时间计数器记录的当前时间达到所述第一个定时器事件对应的任务执行时间时,则利用相应的工作线程执行所述第一个定时器事件所对应的待处理任务;将所述第一个定时器事件的局部时间计数器记录的当前时间作为下一个定时器事件的初始时间,直至轮询完所述任务队列中的所有定时器事件,则结束操作。可选地,所述将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列包括:基于待处理任务构建定时器事件;其中,每个定时器事件包括前后节点指向指针、触发时刻、迭代周期和增量触发时间;按照各定时器事件的触发时刻将所有所述定时器事件升序排列缓存至任务队列。可选地,在所述将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列之后还包括:当接收到新的待处理任务时,对所述新的待处理任务构建新的定时器事件;根据所述新的定时器事件的触发时刻,将所述新的定时器事件插入所述任务队列,并更新与所述新的定时器事件前后相邻的两个定时器事件的前后节点指向指针和增量触发时间。可选地,所述利用预先设定的工作线程更新全局时间计数器包括:按照锁保护的方式,利用多个高优先级工作线程更新全局时间计数器。可选地,在所述利用相应的工作线程执行所述第一个定时器事件所对应的待处理任务之后还包括:当完成所述第一个定时器事件所对应的待处理任务之后,将所述第一个定时器事件从所述任务队列中删除。可选地,还包括:计算各所述局部时间计数器记录的当前时间与所述全局时间计数器记录的当前时间的差值;当存在差值大于预设值的目标局部时间计数器时,则对所述目标局部时间计数器所对应的工作进程进行报错提示。本专利技术实施例还提供了一种基于多线程任务的调度执行装置,包括缓存单元、更新单元、执行单元和作为单元;所述存储单元,用于将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列;其中,每个定时器事件有其对应的一个局部时间计数器以及工作线程;所述更新单元,用于利用预先设定的工作线程更新全局时间计数器,并将所述全局时间计数器记录的当前时间作为所有所述定时器事件的局部时间计数器的初始时间;所述执行单元,用于当第一个定时器事件的局部时间计数器记录的当前时间达到所述第一个定时器事件对应的任务执行时间时,则利用相应的工作线程执行所述第一个定时器事件所对应的待处理任务;所述作为单元,用于将所述第一个定时器事件的局部时间计数器记录的当前时间作为下一个定时器事件的初始时间,直至轮询完所述任务队列中的所有定时器事件,则结束操作。可选地,所述缓存至缓存单元包括构建子单元和排列子单元;所述构建子单元,用于基于待处理任务构建定时器事件;其中,每个定时器事件包括前后节点指向指针、触发时刻、迭代周期和增量触发时间;所述排列子单元,用于按照各定时器事件的触发时刻将所有所述定时器事件升序排列缓存至任务队列。可选地,还包括构建单元、插入单元和指针更新单元;所述构建单元,用于当接收到新的待处理任务时,对所述新的待处理任务构建新的定时器事件;所述插入单元,用于根据所述新的定时器事件的触发时刻,将所述新的定时器事件插入所述任务队列;所述指针更新单元,用于更新与所述新的定时器事件前后相邻的两个定时器事件的前后节点指向指针和增量触发时间。可选地,所述更新单元包括按照锁保护的方式,利用多个高优先级工作线程更新全局时间计数器。可选地,还包括删除单元;所述删除单元,用于当完成所述第一个定时器事件所对应的待处理任务之后,将所述第一个定时器事件从所述任务队列中删除。可选地,还包括计算单元和提示单元;所述计算单元,用于计算各所述局部时间计数器记录的当前时间与所述全局时间计数器记录的当前时间的差值;所述提示单元,用于当存在差值大于预设值的目标局部时间计数器时,则对所述目标局部时间计数器所对应的工作进程进行报错提示。本专利技术实施例还提供了一种基于多线程任务的调度执行装置,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序以实现如上述任意一项所述基于多线程任务的调度执行方法的步骤。本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述基于多线程任务的调度执行方法的步骤。由上述技术方案可以看出,将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列;其中,每个定时器事件有其对应的一个局部时间计数器以及工作线程;利用预先设定的工作线程更新全局时间计数器,并将全局时间计数器记录的当前时间作为所有定时器事件的局部时间计数器的初始时间。利用预先设定的工作线程维护全局时间计数器,可以有效的避免时区或系统时钟修改对全局时间计数器造成的影响。当第一个定时器事件的局部时间计数器记录的当前时间达到第一个定时器事件对应的任务执行时间时,则利用相应的工作线程执行第一个定时器事件所对应的待处理任务;将第一个定时器事件的局部时间计数器记录的当前时间作为下一个定时器事件的初始时间,直至轮询完任务队列中的所有定时器事件,则结束操作。下一个定时器事件依赖本文档来自技高网...

【技术保护点】
1.一种基于多线程任务的调度执行方法,其特征在于,包括:/n将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列;其中,每个定时器事件有其对应的一个局部时间计数器以及工作线程;/n利用预先设定的工作线程更新全局时间计数器,并将所述全局时间计数器记录的当前时间作为所有所述定时器事件的局部时间计数器的初始时间;/n当第一个定时器事件的局部时间计数器记录的当前时间达到所述第一个定时器事件对应的任务执行时间时,则利用相应的工作线程执行所述第一个定时器事件所对应的待处理任务;/n将所述第一个定时器事件的局部时间计数器记录的当前时间作为下一个定时器事件的初始时间,直至轮询完所述任务队列中的所有定时器事件,则结束操作。/n

【技术特征摘要】
1.一种基于多线程任务的调度执行方法,其特征在于,包括:
将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列;其中,每个定时器事件有其对应的一个局部时间计数器以及工作线程;
利用预先设定的工作线程更新全局时间计数器,并将所述全局时间计数器记录的当前时间作为所有所述定时器事件的局部时间计数器的初始时间;
当第一个定时器事件的局部时间计数器记录的当前时间达到所述第一个定时器事件对应的任务执行时间时,则利用相应的工作线程执行所述第一个定时器事件所对应的待处理任务;
将所述第一个定时器事件的局部时间计数器记录的当前时间作为下一个定时器事件的初始时间,直至轮询完所述任务队列中的所有定时器事件,则结束操作。


2.根据权利要求1所述的基于多线程任务的调度执行方法,其特征在于,所述将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列包括:
基于待处理任务构建定时器事件;其中,每个定时器事件包括前后节点指向指针、触发时刻、迭代周期和增量触发时间;
按照各定时器事件的触发时刻将所有所述定时器事件升序排列缓存至任务队列。


3.根据权利要求2所述的基于多线程任务的调度执行方法,其特征在于,在所述将构建的定时器事件按照任务执行的时间顺序依次缓存至任务队列之后还包括:
当接收到新的待处理任务时,对所述新的待处理任务构建新的定时器事件;
根据所述新的定时器事件的触发时刻,将所述新的定时器事件插入所述任务队列,并更新与所述新的定时器事件前后相邻的两个定时器事件的前后节点指向指针和增量触发时间。


4.根据权利要求1所述的基于多线程任务的调度执行方法,其特征在于,所述利用预先设定的工作线程更新全局时间计数器包括:
按照锁保护的方式,利用多个高优先级工作线程更新全局时间计数器。


5.根据权利要求1所述的基于多线程任务的调度执行方法,其特征在于,在所述利用相应的工作线程执行所述第一个定时器事件所对应的待处理任务之后还包括:
当完成所述第一个定时器事件所对应的待处理任务之后,将所述第一个定时器事件从所述任务队列中删除。...

【专利技术属性】
技术研发人员:张珠玉
申请(专利权)人:济南浪潮数据技术有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1