一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务调度方法、电子设备及计算机可读存储介质与流程

2022-07-10 00:45:07 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别是涉及一种任务调度方法、电子设备及计算机可读存储介质。


背景技术:

2.任务池(也可以称之为线程池、事件池)中某个任务对应的事件被触发时,需要有执行线程去执行该任务,以处理该事件;同时要保持后续执行任务池中其它任务时,不会因当前执行该任务而产生明显的时延,甚至卡死现象。


技术实现要素:

3.本技术主要解决的技术问题是如何缩短任务执行时延,改善卡死现象。
4.为解决上述技术问题,本技术采用的一个技术方案是:提供一种任务调度方法。该任务调度方法包括:从任务池中获取被触发事件对应的待执行任务;确定待执行任务的耗时模式;基于耗时模式确定待执行任务的执行线程,并利用执行线程执行待执行任务。
5.为解决上述技术问题,本技术采用的一个技术方案是:提供一种电子设备,该电子设备包括处理器及与处理器耦接的存储器,处理器用于执行存储器中存储的程序指令,以实现:从任务池中获取被触发事件对应的待执行任务;确定待执行任务的耗时模式;基于耗时模式确定待执行任务的执行线程,并利用执行线程执行待执行任务。
6.为解决上述技术问题,本技术采用的一个技术方案是:提供一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现:从任务池中获取被触发事件对应的待执行任务;确定待执行任务的耗时模式;基于耗时模式确定待执行任务的执行线程,并利用执行线程执行待执行任务。
7.本技术的有益效果是:区别于现有技术,本技术任务调度方法先从任务池中获取被触发事件对应的待执行任务,然后确定待执行任务的耗时模式,最后基于耗时模式确定待执行任务的执行线程,并利用执行线程执行待执行任务。通过这种方式,本技术基于待执行任务的耗时模式确定待执行任务的执行线程,能够将具有不同耗时的待执行任务调度到不同的执行线程上去执行,进而能够避免耗时长的待执行任务对其后面的待执行任务造成明显时延,能够缩短任务执行时延,改善卡死现象。
附图说明
8.图1是本技术任务调度方法一实施例的流程示意图;
9.图2是图1实施例中步骤s12的具体流程示意图;
10.图3是本技术任务的周期类短耗时的一示意图;
11.图4是本技术任务的周期类长耗时的一示意图;
12.图5是本技术任务的周期类长短耗时交替的一示意图;
13.图6是图1实施例中步骤s13的具体流程示意图;
14.图7是本技术任务的无规律类短耗时的一示意图;
15.图8是图1实施例中步骤s13的具体流程示意图;
16.图9是本技术任务调度方法一实施例的流程示意图;
17.图10是本技术电子设备一实施例的结构示意图;
18.图11是本技术计算机可读存储介质一实施例的结构示意图。
具体实施方式
19.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本技术保护的范围。
20.任务池提供了一种类库的方式来实现分布式的任务队列。本实施例的任务调度方法可以用于分布式或者独立的节点,节点主要由注册中心、调度任务和任务池组成,节点都设置有各自的服务器和存储器,注册中心用于调度任务及任务的注册,节点内的任务池(线程池)包含多条独立的线程,负责对提取的具体任务实例的实际执行。节点启动时,会进行自我注册,登记节点中可以执行的任务信息,包括任务类型和任务数量等信息,节点可供实际任务执行的任务数量或任务类型可以相同或不同。
21.后台实时处理的业务平台,通常会根据数据的输入与输出,依据时间轴进行分解成不同阶段或不同粒度的逻辑任务(下文称之为任务时序),而每一个待处理的数据可以称为任务(或者事件、消息)。
22.任务池需要一种管理类管理线程及其待执行的同类型任务集合。线程会等待去执行喂给它的任务,当任务集合大于线程集合的个数时,任务会在队列排队等待;而当线程集合个数大于任务集合时,线程会挂起处于阻塞等待状态。
23.本技术首先提出一种任务调度方法,如图1所示,图1是本技术任务调度方法一实施例的流程示意图。本实施例任务调度方法具体包括以下步骤:
24.步骤s11:从任务池中获取被触发事件对应的待执行任务。
25.事件被触发时,产生任务请求消息,包括定时任务和事件任务,定时任务是指按照一定的时间频率,每隔一段时间执行一次的任务;事件任务是实时触发执行的任务;将任务请求消息提交到任务池,即任务队列,并在提交完成时开始监听任务池中待任务执行任务的执行状态;任务调度引擎对任务池进行监听,在发现任务池中有新的任务请求消息时就马上获取任务请求消息,并对任务请求消息进行解析,得到任务注册消息;根据任务注册消息的任务类型得到任务执行消息。
26.步骤s12:确定待执行任务的耗时模式。
27.可选地,本实施例可以通过如图2所示的方法实现步骤s12。本实施例的方法包括步骤s21及步骤s22。
28.步骤s21:获取待执行任务的处理函数的执行历史记录。
29.由上述分析可知,节点在启动时,会由注册中心对任务进行注册,登记节点中可以执行的任务信息,该任务信息除了包括任务类型和任务数量,还包括任务的处理函数。
30.任务调度引擎获取待执行任务的处理函数的执行历史记录,以获取任务被执行的
历史耗时信息。
31.步骤s22:基于执行历史记录预测待执行任务的耗时模式。
32.本实施例可以通过任务调度引擎基于任务的处理函数处理任务的历史耗时信息来获取用户执行任务的耗时模式。
33.任务调度引擎在任务每次被其处理函数处理后,统计其耗时情况,并基于耗时与阈值之间的关系及耗时的规律性等信息获取任务的耗时模式。
34.步骤s13:基于耗时模式确定待执行任务的执行线程,并利用执行线程执行待执行任务。
35.任务调度引擎基于耗时模式确定待执行任务的执行线程,并将任务执行消息发送给执行线程,以利用执行线程执行待执行任务。
36.区别于现有技术,本实施例任务调度方法先从任务池中获取被触发事件对应的待执行任务,然后确定待执行任务的耗时模式,最后基于耗时模式确定待执行任务的执行线程,并利用执行线程执行待执行任务。通过这种方式,本实施例基于待执行任务的耗时模式确定待执行任务的执行线程,能够将具有不同耗时的待执行任务调度到不同的执行线程上去执行,进而能够避免耗时长的待执行任务对其后面的待执行任务造成明显时延,能够缩短任务执行时延,改善卡死现象。
37.可选地,在一实施例中,耗时模式包括周期性短耗时模式。由上述分析可知,每一个任务的输入与输出,依据时间轴进行分解成不同阶段或不同粒度的任务时序,任务的周期性短耗时是指任务的每个任务时序的耗时都小于第一阈值,如图3所示。
38.若任务调度引擎预测待执行任务的耗时模式为周期性短耗时模式,则确定任务池的当前监听线程为待执行任务的执行线程,并保留当前监听线程对任务池的事件监听权,即直接由任务池的当前监听线程(将当前监听线程切换为执行模式)调用任务注册的处理函数,且将任务池的事件监听权暂时保留给当前监听线程,能够避免线程的切换开销。
39.可选地,本实施例的耗时模式包括周期性长耗时模式;任务的周期性长耗时是指任务的每个任务时序的耗时都大于第二阈值(可以与第一阈值相同或不同),如图4所示。
40.若任务调度引擎预测耗时模式为周期性长耗时模式,则确定任务池的通用执行线程为待执行任务的执行线程;具体地,任务调度引擎可以将待执行任务调度到任务池的执行器(由通用执行线程执行任务),且将任务池的事件监听权保留给当前监听线程。由于周期性长耗时模式的待执行任务被执行时需要的时间较较长,会对后面排队的待执行任务造成明显的时延,因此,本实施例将周期性长耗时模式的待执行任务调度到任务池的执行器,能够避免对后面排队的待执行任务造成明显的时延;且无需切换任务池的事件监听权,使得通用执行线程具有最大共享执行的效果。
41.可选地,在另一实施例中,本实施例的耗时模式包括周期性长短耗时交替模式、周期性短耗时模式(可参阅上文介绍)及周期性长耗时模式(可参阅上文介绍);任务的周期性长短耗时交替是指任务的任务时序的耗时长短交替,如图5所示。
42.本实施例可以采用如图6所示的方法实现步骤s13。本实施例的方法包括步骤s61至步骤s64。
43.步骤s61:若耗时模式为周期性长短耗时交替模式,则预测待执行任务的当前任务时序的耗时模式。
44.若任务调度引擎预测耗时模式为周期性长短耗时交替模式,分时序依次调度执行任务的多个任务时序,并针对当前任务时序,预测耗时模式。
45.步骤s62:若当前任务时序的耗时模式为周期性短耗时模式,则确定任务池的当前监听线程为待执行任务的执行线程,并保留当前监听线程对任务池的事件监听权。
46.步骤s63:若当前任务时序的耗时模式为周期性长耗时模式,则确定任务池的通用执行线程为待执行任务的执行线程。
47.步骤s64:利用执行线程执行待执行任务。
48.步骤s62及步骤s63可以参阅上述实施例,这里不赘述。
49.本实施例针对周期性长短耗时交替模式的任务,针对每个任务时序都采用与其耗时模式对应的调度策略,能够进一步缩短任务执行时延,改善卡死现象。
50.可选地,在另一实施例中,本实施例的耗时模式包括无规律性耗时模式;任务的无规律性耗时是指任务的任务时序的耗时长短无规律,如图7所示。
51.本实施例可以采用如图8所示的方法实现步骤s13。本实施例的方法包括步骤s81至步骤s85。
52.步骤s81:若耗时模式为无规律性耗时模式,则确定任务池是否有空闲线程。
53.若任务调度引擎预测耗时模式为无规律性耗时模式,则确定任务池内是否有空闲线程。
54.步骤s82:若有,则确定任务池的当前监听线程为待执行任务的执行线程。
55.若任务调度引擎确定任务池内有空闲线程,则确定任务池的当前监听线程为待执行任务的执行线程,即直接由任务池的当前监听线程(将当前监听线程切换为执行模式)调用任务注册的处理函数。
56.步骤s83:将任务池的事件监听权授权至任务池的其它线程。
57.任务调度引擎收回当前监听线程的事件监听权,并将任务池的事件监听权授权至任务池的下一线程。
58.步骤s84:若无,则确定任务池的通用执行线程为待执行任务的执行线程。
59.若任务调度引擎确定任务池内有空闲线程,则确定任务池的通用执行线程为待执行任务的执行线程;具体地,任务调度引擎可以将待执行任务调度到任务池的执行器(由通用执行线程执行任务),且将任务池的事件监听权保留给当前监听线程。本实施例在任务池无空闲线程时,将无规律性耗时模式的待执行任务调度到任务池的执行器,能够避免对后面排队的待执行任务造成明显的时延;且无需切换任务池的事件监听权,使得通用执行线程具有最大共享执行的效果。
60.步骤s85:利用执行线程执行待执行任务。
61.具体可参阅上述实施例。
62.在另一实施例中,如图9所示,任务池taskpool[x]的线程taskthread[n]被授权监听事件池,即任务池;线程taskthread[n]接收到事件消息,即任务请求消息,并找到对应的待执行任务task及此task执行用户注册处理函数(待执行任务的处理函数)的历史记录。
[0063]
若基于历史记录预测待执行任务task的耗时模式为周期短耗时模式,则线程taskthread[n]直接调用用户注册的处理函数,保留事件池监听所有权,即任务池的事件监听权;进一步地,若线程taskthread[n]直接调用用户注册的处理函数成功返回,则返回上
述任务池taskpool[x]的线程taskthread[n]被授权监听事件池的步骤;若线程taskthread[n]直接调用用户注册的处理函数未成功返回,则任务池taskpool[x]收回事件监听权,并隔离当前的线程taskthread[n],启动另一个线程taskthread[n],即响应于执行线程执行待执行任务失败,则将执行线程的事件监听权授权至任务池的其他线程,并隔离执行线程。
[0064]
若基于历史记录预测待执行任务task的耗时模式为周期长耗时模式,则将待执行任务task调度到任务池的执行器taskpool_executor,并返回上述任务池taskpool[x]的线程taskthread[n]被授权监听事件池的步骤。
[0065]
基于历史记录预测待执行任务task的耗时模式为周期长短交替耗时模式,则进一步预测待执行任务task的当前任务时序的耗时模式,并基于预测结果,采用上述策略进行任务调度。
[0066]
若基于历史记录预测待执行任务task的耗时模式为无规律性耗时模式,则判断任务池taskpool[x]内是否有空闲的线程taskthread,若有,则任务池taskpool[x]收回事件池监听权,且当前的线程taskthread[n]切换为executor执行模式,启用另一个线程taskthread[n]进行监听,并返回上述任务池taskpool[x]的线程taskthread[n]被授权监听事件池的步骤;若无,则将待执行任务task调度到任务池的执行器taskpool_executor,并返回上述任务池taskpool[x]的线程taskthread[n]被授权监听事件池的步骤。
[0067]
本技术进一步提出一种电子设备,如图10所示,图10是本技术电子设备一实施例的结构示意图。本实施例电子设备100包括处理器101、与处理器101耦接的存储器102、输入输出设备103以及总线104。
[0068]
该处理器101、存储器102、输入输出设备103分别与总线104相连,该存储器102中存储有程序数据,处理器101用于执行程序数据以实现:从任务池中获取被触发事件对应的待执行任务;确定待执行任务的耗时模式;基于耗时模式确定待执行任务的执行线程,并利用执行线程执行待执行任务。
[0069]
处理器101执行程序数据时还实现上述实施例的任务调度方法。
[0070]
在本实施例中,处理器101还可以称为cpu(central processing unit,中央处理单元)。处理器101可能是一种集成电路芯片,具有信号的处理能力。处理器101还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器101也可以是任何常规的处理器等。
[0071]
本技术进一步提出一种计算机可读存储介质,如图11所示,图11是本技术计算机可读存储介质一实施例的结构示意图。计算机可读存储介质1001其上存储有程序指令1002,程序指令1002被处理器(图未示)执行时实现:从任务池中获取被触发事件对应的待执行任务;确定待执行任务的耗时模式;基于耗时模式确定待执行任务的执行线程,并利用执行线程执行待执行任务。
[0072]
程序指令1002被处理器执行时还实现上述实施例的任务调度方法。
[0073]
本实施例计算机可读存储介质1001可以是但不局限于u盘、sd卡、pd光驱、移动硬盘、大容量软驱、闪存、多媒体记忆卡、服务器等。
[0074]
本技术任务调度方法先从任务池中获取被触发事件对应的待执行任务,然后确定待执行任务的耗时模式,最后基于耗时模式确定待执行任务的执行线程,并利用执行线程
执行待执行任务。通过这种方式,本技术基于待执行任务的耗时模式确定待执行任务的执行线程,能够将具有不同耗时的待执行任务调度到不同的执行线程上去执行,进而能够避免耗时长的待执行任务对其后面的待执行任务造成明显时延,能够缩短任务执行时延,改善卡死现象。
[0075]
进一步地,本技术能够达到执行线程切换次数最少,将此部分切换开销的受益,直接在执行线程上取得效果。
[0076]
另外,上述功能如果以软件功能的形式实现并作为独立产品销售或使用时,可存储在一个移动终端可读取存储介质中,即,本技术还提供一种存储有程序数据的存储装置,所述程序数据能够被执行以实现上述实施例的方法,该存储装置可以为如u盘、光盘、服务器等。也就是说,本技术可以以软件产品的形式体现出来,其包括若干指令用以使得一台智能终端执行各个实施例所述方法的全部或部分步骤。
[0077]
在本技术的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0078]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0079]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
[0080]
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(可以是个人计算机,服务器,网络设备或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0081]
以上所述仅为本技术的实施方式,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献