任务调度方法和装置、电子设备、存储介质与流程



1.本技术涉及框架研发技术领域,尤其涉及任务调度方法和装置、计算机设备、存储介质。


背景技术:



2.task框架因其具备移植简单,性能损耗低的优点而被广泛应用于嵌入式设备之中,然而,常见task框架采用轮询任务表的形式运行任务,而任务表中存放着各个任务的相关信息,从而确定各个任务之间的运行顺序。但是,任务表中的相关参数是保存在特定的结构体中的,而这个特定的结构体与其它任务的数据之间是隔绝的,各个任务运行过程中无法修改任务表中的相关参数,这也就代表着常见的task框架下,各任务开始运行的时间,结束运行的时间都是从一开始就被确定下来而无法被修改,只有当前任务结束运行后,处理器才会通过轮询任务表,从而开始下一个任务,这就导致任务之间进行调度时缺乏灵活性的问题。


技术实现要素:



3.本公开实施例的主要目的在于提出一种任务调度方法和装置、电子设备、计算机可读存储介质,能提高任务间进行任务调度的灵活性。
4.为实现上述目的,本公开实施例的第一方面提出了一种一种任务调度方法,应用于基于task框架的任务调度装置,所述基于task框架的任务调度装置包括有服务层,所述服务层包括有任务控制接口,所述方法包括:
5.获取第二任务的任务标识号;
6.将所述第二任务的任务标识号发送给所述任务控制接口;
7.根据所述第二任务的任务标识号通过所述任务控制接口修改任务表中的任务参数,得到第一任务参数;
8.根据所述第一任务参数进行任务调度。
9.在一些实施例,在所述将所述第二任务的任务标识号发送给任务控制接口之前,还包括:
10.检测第一任务与第二任务之间是否存在可调度关系;
11.若检测结果为所述第一任务与所述第二任务之间存在可调度关系,将所述第二任务的任务标识号发送至任务控制接口;
12.其中,所述第一任务为当前运行的任务,所述第二任务是除第一任务外的任意一个存放于任务表中的任务。
13.在一些实施例,所述第一任务参数包括重载时间、重复重载标识符和当前时间。
14.在一些实施例,所述根据所述第一任务参数进行任务调度,包括:
15.轮询任务表中的所有任务参数;
16.获取所述第一任务参数发出的服务请求;
17.根据所述服务请求进行任务调度。
18.在一些实施例,在根据所述第二任务的任务标识号通过所述任务控制接口修改任务表中的任务参数,得到第一任务参数之后,还包括:
19.判断所述第一任务参数的数据值是否在预设范围内;
20.若所述第一任务参数的数据值在预设范围内,根据所述第一任务参数进行任务调度;
21.若所述第一任务参数的数据值不在预设范围内,则丢弃所述第一任务参数,并返回错误信息。
22.在一些实施例,所述根据所述第一任务参数进行任务调度之后,还包括:
23.运行所述第二任务;
24.检测是否继续运行所述第二任务;
25.若检测到所述第二任务不再继续运行,则根据第二任务参数修改任务表中的任务参数,并进行任务调度;
26.其中,所述第二任务参数为所述根据所述第二任务的任务标识号通过所述任务控制接口修改任务表中的任务参数之前,任务表中存放的任务参数,所述第二任务参数被预先存放在预设地址中。
27.在一些实施例,所述根据所述第一任务参数进行任务调度之前,还包括:
28.获取所述第一任务中的第一数据的存放地址;
29.创建无类型指针并将所述无类型指针指向所述第一数据的存放地址,获得第一数据地址指针;
30.将所述第一数据地址指针构建为结构体;
31.将所述结构体作为参数传递至第二任务中进行解析;
32.所述第二任务获取第一数据地址指针;
33.所述第二任务根据所述第一数据地址指针获取所述第一数据;
34.其中,所述第一数据为第一任务中需要和第二任务共享的数据。
35.本公开实施例的第二方面提出一种任务调度装置,所述装置包括:
36.获取单元,用于获取第二任务的任务标识号;
37.信息传输单元,用于将所述第二任务的任务标识号发送至所述任务控制接口;
38.控制单元,用于根据所述第二任务的任务标识号修改任务表的任务参数,得到第一任务参数;
39.处理单元,用于根据第一任务参数进行任务调度。
40.本公开实施例的第三方面提出一种电子设备,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器运行时实现如本技术第一方面实施例任一项所述的任务调度方法。
41.本公开实施例第四方面提出一种存储介质,所述存储介质为计算机可读存储介质,用于计算机可读存储,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器运行,以实现如本技术第一方面实施例任一项所述的任务调度方法。
42.本公开实施例提出的任务调度方法和装置、电子设备、存储介质,通过获取第二任务的任务标识号;将第二任务的任务标识号发送给任务控制接口;根据第二任务的任务标识号通过任务控制接口修改任务表中的任务参数,得到第一任务参数;根据第一任务参数进行任务调度。本公开实施例通过在服务层设置任务控制接口,通过所述任务控制接口,使得装置可以在任务运行过程中修改任务表中的任务参数,在修改任务表中的任务参数之后,更改当前任务以及关联任务的运行状态,从而实现任务运行过程中进行任务调度,提高了task框架下,任务之间进行调度的灵活性。
附图说明
43.图1是本公开实施例提供的任务调度方法的流程图;
44.图2是图1中的步骤s200之前还包括的步骤的流程图;
45.图3是图1中的步骤s300之后还包括的步骤的流程图;
46.图4是图1中的步骤s400的流程图;
47.图5是图1中的步骤s400之后还包括的步骤的流程图;
48.图6是图1中的步骤s400之前还包括的步骤的流程图;
49.图7是本公开实施例提供的任务调度装置的模块结构框图;
50.图8是本公开实施例提供的计算机设备的硬件结构示意图。
具体实施方式
51.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
52.需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序运行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
53.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
54.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
55.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
56.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序运行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合
并或部分合并,因此实际运行的顺序有可能根据实际情况改变。
57.首先,对本技术中涉及的若干名词进行解析:
58.task框架:一种线程池任务调度框架,通过对定时多处复用,在定时器计数,定时进行标志位的变化,继而主程序对标志真假的判断,实现不同时间不同任务状态运行。具有移植简单,性能损耗低的优点,常见应用于嵌入式设备开发中。
59.轮询(polling):一种cpu决策如何提供周边设备服务的方式,又称“程控输入输出”(programmed i/o)。轮询法的概念是:由cpu定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边。
60.任务表结构体(task_struct):是linux内核中的一个重要数据结构,是每个进程和线程(在内核中线程也是一个进程)的进程描述符。task_struct中存储了进程的进程名、uid、栈地址指针、父进程指针等几乎所有进程的重要信息。
61.线程(thread):是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行运行不同的任务。在unix system v及sunos中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程,是独立调度和分派的基本单位。
62.进程(process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本运行实体;在当代面向线程设计的计算机结构中,进程是线程的容器,一个进程可以包括多个线程。
63.任务(task):指由软件完成的一个活动。一个任务既能够是一个进程,也能够是一个线程。简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务能够做为一个进程来实现,也能够做为一个线程(或做为一个中断任务)来实现。
64.指针(pointer):也就是内存地址,指针变量是用来存放内存地址的变量,在同一cpu构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。指针描述了数据在内存中的位置,标示了一个占据存储空间的实体,在这一段空间起始位置的相对距离值。在c/c++语言中,指针一般被认为是指针变量,指针变量的内容存储的是其指向的对象的首地址,指向的对象可以是变量(指针变量也是变量),数组,函数等占据存储空间的实体。
65.结构体(struct):一种复合数据类型,由一系列具有相同类型或不同类型的数据构成的数据集合。
66.服务层(service):相当于中间类的作用,中间的工厂类提供了另一个通用放任接口让调用者可以使用接口暴漏的方法,而无需关注架构或底层发生的怎样的变化。
67.依赖(dependency):即类a要完成某个功能引用了类b,在代码中主要体现为类a的某个成员函数的返回值、形参、局部变量或静态方法的调用,依赖关系是单向的,且仅当类的方法被调用时而产生,伴随着方法的结束而结束,即依赖是对象之间的一种临时关系。
68.关联(association):包括单向关联、双向关联、自身关联以及多维关联,他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,相比于依赖关系,关联是一种长
期性的而非临时性的,两个类之间的关系是对等的,在代码层面,表现为被关联类b以类属性的形式出现在关联类a中,也可能是关联类a引用了一个类型为被关联类b的全局变量。
69.近年来,在日常生活中,嵌入式设备扮演着越来越重要的角,对嵌入式设备而言,为保证系统整体的稳定性和可靠性,开发过程中往往需要选择相对合适的软件框架来运行复杂任务,task框架凭借其在满足常用的开发需求前提下,具备移植简单,性能损耗低的优点而常用于嵌入式设备开发中,然而由于框架的设计结构的限制,任务表的相关参数保存在特定的结构体中,任务表的相关参数与各个任务之间的数据是隔离的,在任务的运行过程中,无法对任务表的相关参数进行修改,任务之间的再调度缺乏灵活性。
70.此外,在该框架下各个任务之间的数据也是相互隔绝的,彼此之间的通信受到阻隔,当多个任务之间需要共享部分数据时,需要通过设置全局变量来传递参数实现数据共享,而当需要共享的数据量较大时,需要设置多个全局变量,从而占用大量内存空间,造成资源浪费。
71.基于此,本公开实施例提出的一种任务调度方法和装置、电子设备、存储介质,能够提高task框架下,任务之间再调度的灵活性。
72.本公开实施例提供任务调度方法和装置、电子设备、存储介质,具体通过如下实施例进行说明,首先描述本公开实施例中的任务调度方法。
73.本公开实施例提供的任务调度方法,可应用于基于task框架的嵌入式终端中,也可以应用于基于task框架的服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机或者智能手表等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现任务调度方法的应用等,但并不局限于上述形式。
74.本公开实施例可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机运行的计算机可运行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括运行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来运行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
75.参照图1,根据本公开实施例第一方面实施例的任务调度方法,包括但不限于步骤s100至步骤s400。
76.步骤s100,获取第二任务的任务标识号;
77.步骤s200,将第二任务的任务标识号发送给任务控制接口;
78.步骤s300,根据第二任务的任务标识号通过任务控制接口修改任务表中的任务参数,得到第一任务参数;
79.步骤s400,根据第一任务参数进行任务调度。
80.在一些实施例的步骤s100中,获取第二任务的任务标识号,其中,第二任务可以是
系统中待运行的任意一个任务,任务标识号根据系统预设规则生成,并预先分配至各个任务,各个任务分配到的任务标识号均不相同,任务标识号与任务之间一一对应,基于此,可以将任务标识号作为区分各个任务的标识。任务标识号的具体形式可以是阿拉伯数字、大写字母、小写字母、标点符合或者其中至少两项的组合,由系统预设规则决定。例如,第二任务的任务标识号可以是“task_0002”。
81.在一些实施例的步骤s200中,将第二任务的任务标识号发送给任务控制接口,其中,所述任务控制接口设置于服务层,所述服务层直接与任务参数接触。
82.在一些实施例的步骤s300中,根据第二任务的任务标识号通过任务控制接口修改任务表中的任务参数,得到第一任务参数。其中所述任务表中存储有包括重载时间、重复重载标识符和当前时间等任务参数,这些参数存储在特定的结构体中,此外,任务表结构体中还存储有进程的进程名、uid、栈地址指针、父进程指针等几乎所有进程相关的重要信息。具体的,当控制接口接收到第二任务的任务标识号之后,会修改其中存储的包括重载时间,重复重载标识符以及当前时间的任务相关参数,记录被修改后的重载时间,重复重载标识符以及当前时间,作为第一任务参数。
83.在一些实施例的步骤s400中,根据第一任务参数进行任务调度。当任务表中的重载时间、重复重载标识符以及当前时间等任务相关参数被修改后,处理器会根据被修改后的任务相关参数,即第一任务参数调整任务的运行时间,任务是否运行的状态,从而将当前运行的任务挂起或者直接结束运行,开始运行与第一任务参数相对应的任务。
84.在一些实施例中,如图2所示,步骤s200之前还包括但不限于步骤s210至步骤s220。
85.步骤s210,检测第一任务与第二任务之间是否存在可调度关系;
86.步骤s220,若检测结果为第一任务与第二任务之间存在可调度关系,将第二任务的任务标识号发送至任务控制接口。
87.在一些实施例的步骤s210中,检测第一任务和第二任务之间是否存在可调度关系,其中第一任务是指系统当前正在运行的任务,第二任务是指除第一任务外任意一个存放于任务表中的待运行任务,所述可调度关系可以是依赖、关联等关系中的一个,也可以是系统强制添加的一种可调度关系,比如当第一任务运行至某一节点就会主动暂停当前第一任务的进程并开启第二任务的进程
88.在一些实施例的步骤s220中,若检测结果为第一任务与第二任务之间存在可调度关系,将第二任务的任务标识号发送至任务控制接口,其中,系统可以通过消息总线,将第二任务的任务标识号发送至任务控制接口。
89.在一些实施例中,如图3所示,步骤s300之后,还包括但不限于步骤s310至步骤s330。
90.步骤s310,判断第一任务参数的数据值是否在预设范围内;
91.步骤s320,若第一任务参数的数据值在预设范围内,根据第一任务参数进行任务调度;
92.步骤s330,若第一任务参数的数据值不在预设范围内,则丢弃第一任务参数,并返回错误信息。
93.在一些实施例的步骤s310中,判断第一任务参数是否在预设范围内。比如,判断当
前时间应当是一个符合时间格式的参数,判断重载时间是否为负数等
94.在一些实施例的步骤s330中,若第一任务参数的数据值不在预设范围内,则丢弃第一任务参数,并返回错误信息。比如,当任务参数中的当前时间为一个不符合时间格式的参数或者超出正常时间范围的参数,比如,当前时间参数中含有表意不明的英文字母串“abc”或者所表示的时间是一个负数,则判断为第一任务参数不在预设范围内,在这种情况下,若仍然根据第一任务参数进行任务调度,会出现意料之外的bug,因此,在这种情况下,系统应当舍弃此时的第一任务参数,并将该错误信息上报至系统。
95.在一些实施例中,如图4所示,步骤s400包括但不限于步骤s410至步骤s430。
96.步骤s410,轮询任务表中的所有任务参数;
97.步骤s420,获取第一任务参数发出的服务请求;
98.步骤s430,根据服务请求进行任务调度。
99.在一些实施例的步骤s410中,轮询任务表中的所有任务参数,其中,任务表存储有包括重载时间、重复重载标识符和当前时间以及进程的进程名、uid、栈地址指针、父进程指针等几乎所有进程参数,轮询,即cpu轮流询问任务表中的任务参数是否需要cpu为其提供服务,若接收到服务请求,则cpu给予服务,若接收不到请求,则继续询问下一个,循环
100.在一些实施例的步骤s420中,获取第一任务参数发出的服务请求,其中,被修改后的第一任务参数不在对应当前运行的第一任务,随即会向cpu发出服务请求,请求更改当前任务的运行状态,挂起或结束当前运行的与第一任务参数不对应的参数,并开启运行与第一任务参数对应的第二任务。
101.在一些实施例的步骤s430中,根据服务请求进行任务调度,处理器在接收到第一任务参数发出的服务请求之后,运行相应操作,挂起第一任务,并开启第二任务。
102.在一些实施例中,如图5所示,步骤s400之后,还包括但不限于步骤s510至步骤s530。
103.步骤s510,运行第二任务;
104.步骤s520,检测是否继续运行第二任务;
105.步骤s530,若检测到第二任务不再继续运行,则根据第二任务参数修改任务表中的任务参数,并进行任务调度。
106.在一些实施例的步骤s510中,运行第二任务。其中,第二任务是任务表中与上述步骤s400中与的第一任务参数相对应的任务,在步骤s400中,根据第一任务参数进行任务调度之后,系统会挂起或终止运行第一任务,并开启运行第二任务
107.在一些实施例的步骤s520中,检测是否继续运行第二任务。可以理解的,由于前述步骤中,挂起或终止了第一任务的运行过程,并开启第二任务的运行过程,为了保证在第二任务运行结束后,重新继续完成第一任务的运行的过程,所以在开启第二任务的运行过程后实时监测第二任务的运行状态。
108.在一些实施例的步骤s530中,若检测到第二任务不再继续运行,则根据第二任务参数修改任务表中的任务参数,并进行任务调度。其中所述第二任务参数为所述根据所述第二任务的任务标识号通过所述任务控制接口修改任务表中的任务参数之前,任务表中存放的任务参数,所述第二任务参数被预先存放在预设地址中,即所述第二任务参数记录了第一任务被挂起或者被终止运行前的节点,当由于开始运行第二任务前,中断或终止了第
一任务的运行,当第二任务结束运行后,应当让处理器重新复位到第一任务被中断运行或被终止运行前的节点,继续完成第一任务的运行过程。
109.在一些实施例中,如图6所示,步骤s400之前,还包括但不限于步骤s610至步骤s660.
110.步骤s610,获取第一任务中的第一数据的存放地址;
111.步骤s620,创建无类型指针并将无类型指针指向所述第一数据的存放地址,获得第一数据地址指针;
112.步骤s630,将第一数据地址指针构建为结构体;
113.步骤s640,将结构体作为参数传递至第二任务中进行解析;
114.步骤s650,第二任务获取第一数据地址指针;
115.步骤s660,第二任务根据所述第一数据地址指针获取所述第一数据。
116.在一些实施例的步骤s610中,获取第一任务中的第一数据的存放地址。其中,第一数据指的是第一任务中需要和第二任务共享的数据,可以理解的,所述第一数据可以是一个数据,也可以是至少两个数据,具体由第一任务中需要和第二数据共享数据量决定。
117.在一些实施例的步骤s620中,创建无类型指针并将无类型指针指向所述第一数据的存放地址,获得第一数据地址指针。其中,由于第一数据的数据类型可以是多样的,比如可以是整型数据(int、short、long),也可以是浮点型数据(float、double),还可以是字符型数据(char),不同类型的数据对指针寻址范围的要求不同,因此,在此处创建无类型指针,即通用指针,其可以指向任何数据类型。
118.在一些实施例的步骤s630中,将第一数据地址指针构建为结构体。如上步骤s620所述,由于第一数据的可以是多种数据类型,其地址指针的也可以是多种数据类型的指针,基于此,需要构建一种可以包括多种数据类型的数据集合体,而结构体可以满足该要求,由此,将第一数据地址指针构建为结构体。
119.在一些实施例的步骤s640中,将结构体作为参数传递至第二任务中进行解析。上述步骤s630中,将第一数据地址指针构建为结构体,之后通过结构体传址将结构体作为参数传递至第二任务中,在第二任务中对该结构体进行解析,从中提取出第一数据地址指针,由此第二任务可以获取到第一数据地址指针。
120.在一些实施例的步骤s660中,第二任务根据所述第一数据地址指针获取所述第一数据。在上述步骤s640至步骤s650中,第二任务获取到了第一数据地址指针,但是,由于上述步骤s620中是通过创建无类型指针指向第一数据,而无类型指针由于本身没有明确数据类型,其只能指向变量的起始地址,而无法明确该指针的寻址范围,因此,无类型指针在使用过程中,还需要根据已知的变量的字节长度,通过强制类型转换,将无类型指针转换为特定类型的指针,比如已知变量是从指定地址向后寻4个字节作为变量时,则需要将无类型指针强制转换为int型指针。之后再根据变量存放起始地址以及寻址范围,获取到准确的第一数据。
121.本公开实施例提出的应用于基于task框架的任务调度装置,其中基于task框架的任务调度装置包括有服务层,服务层包括有任务控制接口,通过获取第二任务的任务标识号;将第二任务的任务标识号发送给任务控制接口;根据第二任务的任务标识号通过任务控制接口修改任务表中的任务参数,得到第一任务参数;根据第一任务参数进行任务调度。
本公开实施例通过在服务层设置任务控制接口,使得各个任务运行过程中可以实时修改任务表中的相关任务参数,通过修改相关任务参数,变更任务运行状态,从而实现任务之间的再调度,有效提高了task框架下任务之间再调度的灵活性。
122.此外,本公开实施例考虑到在传统的task框架下,任务之间的数据相互之间隔绝,跨任务的数据共享的实现依赖于全局变量,而当全局变量数量较多时会占用过多的内存,造成资源浪费。本公开实施例通过创建指针指向需要共享的数据的地址,在任务之间再调度的过程中,将指针构建为结构体作为参数传递到第二任务中,再在第二任务中根据该指针获取到需要共享的数据的存放地址,从而获取到需要共享的数据,通过该方法可以减少全局变量的设置,而指针本身占用的内存相较于全局变量更少,由此可以节约内存资源。
123.本公开实施例还提供一种任务调度装置700,如图7所示,可以实现上述任务调度方法,该任务调度装置包括:获取单元710、信息传输单元720、控制单元730、处理单元740;其中获取单元710用于获取第二任务的任务标识号;信息传输单元720用于将所述第二任务的任务标识号发送至所述任务控制接口;控制单元730用于根据所述第二任务的任务标识号修改任务表的任务参数,得到第一任务参数;处理单元740用于根据第一任务参数进行任务调度。
124.本公开实施例的任务调度装置700用于执行上述实施例中的任务调度方法,其具体处理过程与上述实施例中的任务调度方法相同,此处不再一一赘述。
125.本公开实施例还提供了一种计算机设备800,包括:
126.至少一个处理器,以及,
127.与至少一个处理器通信连接的存储器;其中,
128.存储器存储有指令,指令被至少一个处理器执行,以使至少一个处理器执行指令时实现如本技术第一方面实施例中任一项的方法。
129.下面结合图8对计算机设备的硬件结构进行详细说明。该计算机设备包括:处理器810、存储器820、输入/输出接口830、通信接口840和总线850。
130.处理器810,可以采用通用的中央处理器(central processin unit,cpu)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本公开实施例所提供的技术方案;
131.存储器820,可以采用只读存储器(read only memory,rom)、静态存储设备、动态存储设备或者随机存取存储器(random access memory,ram)等形式实现。存储器820可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器820中,并由处理器810来调用执行本公开实施例的任务调度方法;
132.输入/输出接口830,用于实现信息输入及输出;
133.通信接口840,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信;和
134.总线850,在设备的各个组件(例如处理器810、存储器820、输入/输出接口830和通信接口840)之间传输信息;
135.其中处理器810、存储器820、输入/输出接口830和通信接口840通过总线850实现彼此之间在设备内部的通信连接。
136.本公开实施例描述的实施例是为了更加清楚的说明本公开实施例的技术方案,并不构成对于本公开实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本公开实施例提供的技术方案对于类似的技术问题,同样适用。
137.本领域技术人员可以理解的是,图1至图8中示出的技术方案并不构成对本公开实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
138.以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
139.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
140.本技术的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
141.应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
142.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不运行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
143.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
144.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
145.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上
或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)运行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序的介质。
146.以上参照附图说明了本公开实施例的优选实施例,并非因此局限本公开实施例的权利范围。本领域技术人员不脱离本公开实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本公开实施例的权利范围之内。

技术特征:


1.一种任务调度方法,应用于基于task框架的任务调度装置,其特征在于,所述基于task框架的任务调度装置包括有服务层,所述服务层包括有任务控制接口,所述方法包括:获取第二任务的任务标识号;将所述第二任务的任务标识号发送给所述任务控制接口;根据所述第二任务的任务标识号通过所述任务控制接口修改任务表中的任务参数,得到第一任务参数;根据所述第一任务参数进行任务调度。2.根据权利要求1所述的任务调度方法,其特征在于,在所述将所述第二任务的任务标识号发送给所述任务控制接口之前,还包括:检测第一任务与第二任务之间是否存在可调度关系;若检测结果为所述第一任务与所述第二任务之间存在可调度关系,将所述第二任务的任务标识号发送给所述任务控制接口;其中,所述第一任务为当前运行的任务,所述第二任务是除第一任务外的任意一个存放于任务表中的任务。3.根据权利要求1所述的任务调度方法,其特征在于,所述第一任务参数包括重载时间、重复重载标识符和当前时间。4.根据权利要求1所述的任务调度方法,其特征在于,所述根据所述第一任务参数进行任务调度,包括:轮询任务表中的所有任务参数;获取所述第一任务参数发出的服务请求;根据所述服务请求进行任务调度。5.根据权利要求1所述的任务调度方法,其特征在于,在根据所述第二任务的任务标识号通过所述任务控制接口修改任务表中的任务参数,得到第一任务参数之后,还包括:判断所述第一任务参数的数据值是否在预设范围内;若所述第一任务参数的数据值在预设范围内,根据所述第一任务参数进行任务调度;若所述第一任务参数的数据值不在预设范围内,则丢弃所述第一任务参数,并返回错误信息。6.根据权利要求1所述的任务调度方法,其特征在于,所述根据所述第一任务参数进行任务调度之后,还包括:运行所述第二任务;检测是否继续运行所述第二任务;若检测到所述第二任务不再继续运行,则根据第二任务参数修改任务表中的任务参数,并进行任务调度;其中,所述第二任务参数为所述根据所述第二任务的任务标识号通过所述任务控制接口修改任务表中的任务参数之前,任务表中存放的任务参数,所述第二任务参数被预先存放在预设地址中。7.根据权利要求1所述的任务调度方法,其特征在于,在所述根据所述第一任务参数进行任务调度之前,还包括:获取所述第一任务中的第一数据的存放地址;
创建无类型指针并将所述无类型指针指向所述第一数据的存放地址,获得多个第一数据地址指针;将所述第一数据地址指针构建为结构体;将所述结构体作为参数传递至第二任务中进行解析;所述第二任务获取所述第一数据地址指针;所述第二任务根据所述第一数据地址指针获取所述第一数据;其中,所述第一数据为第一任务中需要和第二任务共享的数据。8.一种任务调度装置,其特征在于,所述装置包括:获取单元,用于获取第二任务的任务标识号;信息传输单元,用于将所述第二任务的任务标识号发送至所述任务控制接口;控制单元,用于根据所述第二任务的任务标识号修改任务表的任务参数,得到第一任务参数;处理单元,用于根据第一任务参数进行任务调度。9.一种电子设备,其特征在于,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器运行时实现如权利要求1至7中任一项所述的任务调度方法。10.存储介质,所述存储介质为计算机可读存储介质,用于计算机可读存储,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器运行,以实现如权利要求1至7中任一项所述的任务调度方法。

技术总结


本实施例提供了一种任务调度方法和装置、电子设备、存储介质,属于框架研发技术领域。包括:获取第二任务的任务标识号;将所述第二任务的任务标识号发送给所述任务控制接口;根据所述第二任务的任务标识号通过所述任务控制接口修改任务表中的任务参数,得到第一任务参数;根据所述第一任务参数进行任务调度。通过设置在服务层的任务控制接口,使得任务运行过程中可以与任务表中任务参数接触,实时修改任务参数,从而变更任务运行状态,提高任务之间再调度的灵活性。再调度的灵活性。再调度的灵活性。


技术研发人员:

瞿晓阳 王健宗 邓宝平

受保护的技术使用者:

平安科技(深圳)有限公司

技术研发日:

2022.07.13

技术公布日:

2022/11/22

本文发布于:2024-09-20 15:00:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/5478.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   参数   步骤   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议