CN109117260B - 一种任务调度方法、装置、设备和介质 - Google Patents
一种任务调度方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN109117260B CN109117260B CN201811003390.2A CN201811003390A CN109117260B CN 109117260 B CN109117260 B CN 109117260B CN 201811003390 A CN201811003390 A CN 201811003390A CN 109117260 B CN109117260 B CN 109117260B
- Authority
- CN
- China
- Prior art keywords
- thread
- processing task
- task
- priority
- standby
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例公开了一种任务调度方法、装置、设备和介质。该方法包括:通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行所述主线程,以执行该处理任务;获取新触发处理任务;如果所述新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则将所述新触发处理任务分配给备用线程;通过系统内核,从至少一个处理器中调度分配处理器来执行所述备用线程。通过该方法可以实现对各处理任务的合理调度,且兼顾无人车系统的资源成本。
Description
技术领域
本发明实施例涉及计算机任务处理控制技术,尤其涉及一种任务调度方法、装置、设备和介质。
背景技术
无人车系统是目前人工智能的一个重要的应用领域。在无人车系统中,运行着对应不同功能的多个功能模块,各个功能模块由程序实现,可以有或没有配合的硬件设备。典型的功能模块如,驾驶(Driver)模块、感知(Perception)模块和规划(Planning)模块等十几、甚至数十个功能模块。不同的无人车系统,会由于配置的硬件设备不同,或软件功能不同,而设置不同的功能模块。
每个功能模块都有对应的处理任务,当该处理任务实时获取到输入数据或者接收到执行指令时,就需要调度处理器来执行该处理任务。对于现有的多核系统来说,即具有多个处理器的系统,是由系统内核程序来调度处理器的时间片的,可为需执行的处理任务建立线程,而后根据各个线程处理任务的优先级调度分配处理器的时间片来执行。由于无人车系统的处理任务繁多、且复杂,所以需要处理器频繁切换线程。
线程切换前后需要保护和恢复上下文信息,因此频繁切换线程会导致资源的浪费。由于车载硬件本身并行度和执行资源都非常有限,上述这种传统的多线程方案存在线程切换开销过大、任务并行度不足等缺点,严重限制了车载计算的性能和可扩展性。
发明内容
本发明实施例提供一种任务调度方法、装置、设备和介质,以实现对各处理任务的合理调度,且兼顾无人车系统的资源成本。
第一方面,本发明实施例提供了一种任务调度方法,包括:
通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行所述主线程,以执行该处理任务;
获取新触发处理任务;
如果所述新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则将所述新触发处理任务分配给备用线程;
通过系统内核,从至少一个处理器中调度分配处理器来执行所述备用线程。
第二方面,本发明实施例提供了一种任务调度装置,包括:
处理任务执行模块,用于通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行所述主线程,以执行该处理任务;
处理任务获取模块,用于获取新触发处理任务;
备用线程分配模块,用于如果所述新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则将所述新触发处理任务分配给备用线程;
备用线程执行模块,用于通过系统内核,从至少一个处理器中调度分配处理器来执行所述备用线程。
第三方面,本发明实施例提供了一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如任意实施例所述的任务调度方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如任意实施例所述的任务调度方法。
本发明实施例通过绑定处理器与主线程执行处理任务,同时设置备用线程与处理器的调度分配关系,解决了线程切换前后需要保护和恢复上下文信息,因此频繁切换线程会导致资源的浪费的问题。实现了对各处理任务的合理调度,且兼顾无人车系统的资源成本。
附图说明
图1为本发明实施例一提供的一种任务调度方法的流程图;
图2为本发明实施例二提供的一种任务调度方法的流程图;
图3为本发明实施例三提供的一种任务调度装置的结构图;
图4为本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
本发明实施例的技术方案,可选的是适用于无人车系统的处理任务调度,但可以理解是,也可以适用于其他应用场景中,存在多种功能模块对应的处理任务的调度控制。
基于预知的各处理任务的依赖关系等因素,可预先形成一个或多个任务队列,每个任务队列可根据依赖关系反映任务的优先级,任务队列之间也可以基于处理任务的交互关系进行关联。当任意一个任务队列的处理任务接收到执行指令时,则需要启动执行。
实施例一
图1为本发明实施例一提供的一种任务调度方法的流程图,本实施例可适用于无人车系统的处理任务调度情况,该方法可以由一种任务调度装置来执行,该装置可以采用软件和/或硬件的方式实现,可配置于处理各种处理任务的电子设备中,如配置在无人驾驶车辆中。该电子设备设置有至少一个处理器,但可选的是设置至少两个处理器,以便进行处理任务的并行处理。
如图1所示,该方法具体包括:
S101、通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行所述主线程,以执行该处理任务。
在本发明实施例中,处理器可以是CPU(Central Processing Unit,中央处理器)。可以由操作系统(OS)创建与每个处理器分别对应的一个线程,称为该处理器的主线程。可以通过配置线程的参数来实现该线程与处理器之间的绑定关系,例如,设定该线程所允许分配的处理器。
任务队列是由处理任务组成的队列,可以是电子设备中的全部处理任务或部分处理任务组成的队列。可选的是预先设置主线程与任务队列之间的对应关系。任务队列中的处理任务,在产生新的输入数据或执行指令时,会接到执行通知消息,由此触发某个处理任务待执行,可以通过改变该处理任务的状态来标志其为待执行状态。
具体的,主线程对任务队列中的待执行任务进行遍历,发现需执行的处理任务时则执行该处理任务。当该处理任务被执行完毕后,主线程再次对任务队列中的处理任务进行遍历,以便发现并执行下一个处理任务。
S102、获取新触发处理任务。
其中,处理任务与无人车系统中各个功能模块对应,当该处理任务实时获取到输入数据或者接收到执行指令时,就需要调度处理器来执行该处理任务,该处理任务的优先级可预先确定,或者根据数据流向等因素确定。处理任务的优先级根据处理任务在任务队列中的顺序或拓扑关系确定。新触发处理任务是指当前无人车系统中某个功能模块需要执行的处理任务。
具体的,当无人车系统的功能模块接收到执行通知消息时,会触发处理任务,任务调度模块获取新触发处理任务。
S103、如果新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则将新触发处理任务分配给备用线程。
其中,备用线程是一个一般情况下闲置的线程,一个新触发处理任务是否需要分配给备用线程,取决于新触发处理任务与当前各个处理器执行的处理任务的优先级的大小。
具体的,任务调度装置遍历多个处理器当前执行的处理任务的优先级,如果所述新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则将所述新触发处理任务分配给备用线程执行。可选的,每个任务队列是与处理器及其主线程一一对应的,则某个任务队列中产生新触发处理任务时,则首先识别该新触发处理任务的优先级,与对应主线程当前执行处理任务的优先级之间的关系,如果新触发处理任务的优先级更高,则为了保证能够尽快被执行,会为新触发处理任务分配备用线程。
S104、通过系统内核,从至少一个处理器中调度分配处理器来执行备用线程。
其中,系统内核提供操作系统的最基本的功能,负责管理系统的进程、线程、内存、设备驱动程序、文件和网络系统。系统内核具有调度分配处理器执行线程的权限。系统内核会综合所有当前活跃线程的优先级,将各个处理器的时间分片调度给高优先级的线程,而低优先级的线程进入等待状态。由于备用线程的优先级高于至少一个主线程的优先级,所以系统内核会控制主线程等待,而优先分配处理器去执行备用线程。系统内核为各线程调度处理器资源的规则,可以由系统内核来控制。主线程绑定处理器,则可以由用户编制将该处理器调度给主线程的调度规则,易于进行用户态控制。
本发明实施例通过绑定处理器与主线程执行处理任务,解决了线程切换前后需要保护和恢复上下文信息,因此频繁切换线程会导致资源的浪费的问题。同时设置备用线程与处理器的调度分配关系,实现了对各处理任务的合理调度,避免高优先级处理任务无法及时执行,且兼顾无人车系统的资源成本。
实施例二
图2为本发明实施例二提供的一种任务调度方法的流程图。本实施例是在上述实施例基础上进行的细化,详细描述了如何获取新触发处理任务,和如何将所述新触发处理任务分配给备用线程。具体包括如下步骤:
S201、通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行该主线程,以执行该处理任务。
具体的,主线程对任务队列中的待执行任务进行遍历,发现需执行的处理任务时则执行该处理任务。当该处理任务被执行完毕后,主线程再次对任务队列中的处理任务进行遍历,以便发现并执行下一个处理任务。
S202、通过主线程,对任务队列中的各处理任务进行遍历,以监测接收到执行通知消息的处理任务,作为新触发处理任务。
其中,当一个处理任务实时获取到输入数据或者接收到执行指令时可以认为一个处理任务收到执行通知消息。
具体的,当无人车系统中某个功能模块实时获取到输入数据或者接收到执行指令时,任务调度装置通过对各个处理任务进行遍历可以检测到接收到执行通知消息的处理任务,并将该处理任务作为新触发处理任务。
S203、判断新触发处理任务的优先级与主线程当前执行处理任务的优先级的关系。若新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则执行S205;若小于,则执行S204。
具体的,比较新触发处理任务的优先级与主线程当前执行处理任务的优先级的关系。以某个处理器的任务队列包括多个处理任务(处理任务的优先级p1>p2>p3>p4>p5)为例进行说明:处理器的主线程正在执行优先级为p2的处理任务,此时,监测到驾驶模块接收到执行通知消息的处理任务,将该驾驶模块对应的处理任务作为新触发处理任务。判断新触发处理任务的优先级与主线程当前执行处理任务的优先级的关系,若新触发处理任务的优先级为p1,即新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级(p2),则执行步骤S205。若新触发处理任务的优先级为p4,即新触发处理任务的优先级小于主线程当前执行处理任务的优先级(p3),则执行步骤S204。
S204、不作处理,等待主线程执行。
具体的,若新触发处理任务的优先级为p4,即新触发处理任务的优先级小于主线程当前执行处理任务的优先级(p3)则不作其他处理。等待执行完毕其当前处理任务的主线程对任务队列中的处理任务进行遍历,随后执行该优先级为p4的新触发处理任务。
S205、创建一个备用线程,或者从备用线程池中确定一个备用线程。
创建或从线程池中确定的备用线程,此前都是没有对应处理任务,处于空闲等待状态。
具体的,可以将备用线程与一个处理器进行绑定,尤其是与新触发处理任务所在任务队列对应主线程的绑定处理器,进行绑定,即可选的,将所述备用线程配置为由所述主线程的绑定处理器来执行。分配给某个主线程的任务队列的处理任务之间,一般是有一定拓扑关系的,处理任务之间的关联更紧密,所以由系统内核将该处理器在主线程和备用线程之间调度,更能兼顾处理任务之间的关系,减小对其他处理器处理进程的影响。当检测到备用线程需要执行时,内核系统调度与备用线程绑定的处理器执行该备用线程。
或者,备用线程也可以不与处理器绑定,由系统内核从至少一个处理器中调度分配任意处理器来执行所述备用线程。比如选择当前空闲的处理器执行所述备用线程,或者调度分配当前处理任务优先级最低的处理器执行该备用线程。
S206、为备用线程设置执行优先级的等级。
可以为备用线程设置执行优先级的等级,该等级可供系统内核进行调度时作为参考因素。为备用线程设置执行优先级的等级可以参考新触发处理任务的优先级来设置。该执行优先级可以直接采用备用线程的处理任务的优先级,或者也可以将处理任务的优先级作为重要考虑参数,同时再结合其他因素,共同确定备用线程的执行优先级。例如,结合备用线程的启动时间、所需持续时间、所需占用资源等因素来共同确定其执行优先级。
S207、将新触发处理任务分配给所述备用线程。
具体的,若备用线程与一个处理器进行绑定,当新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则确定一个备用线程。若新触发处理任务的优先级为p1,即新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级(p2),则从备用线程池中确定一个备用线程,并为备用线程设置执行优先级的等级(设置为p1),并将该将新触发处理任务(优先级为p1)分配给所述备用线程(优先级为p1)。
具体的,若备用线程没有与处理器进行绑定,当新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则确定一个备用线程。例如,若新触发处理任务的优先级为p1,即新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级(p2),则确定一个备用线程,并为备用线程设置执行优先级的等级(设置为p1),并将该将新触发处理任务(优先级为p1)分配给所述备用线程(优先级为p1)。
S208、通过系统内核,根据备用线程与其他所有线程所处理任务的优先级,在多个处理器中调度分配一个处理器给备用线程。
S209、在备用线程执行完该新触发处理任务时,设置备用线程的状态为等待状态。
具体的,设置所述备用线程的状态为等待状态可以通过线程等待函数或调用sleep函数来实现。当所述备用线程执行完该新触发处理任务时,设置所述备用线程的状态为等待状态。等待将下一个符合预设条件的新触发处理任务分配给备用线程。或者,也可以直接删除该备用线程。
在上述实施例的基础上,步骤S201-S209提供的方法适用于无人车系统,所述处理任务对应于所述无人车系统中的功能模块,其中,所述功能模块至少包括:规划模块、感知模块和驾驶模块。
本发明实施例通过绑定处理器与主线程执行处理任务,同时设置备用线程与处理器的调度分配关系,解决了线程切换前后需要保护和恢复上下文信息,因此频繁切换线程会导致资源的浪费的问题。
实施例三
图3为本发明实施例三提供的一种任务调度装置的结构图。该装置包括:处理任务执行模块31、处理任务获取模块32、备用线程分配模块33和备用线程执行模块34。其中:
处理任务执行模块31,用于通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行所述主线程,以执行该处理任务;
处理任务获取模块32,用于获取新触发处理任务;
备用线程分配模块33,用于如果所述新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则将所述新触发处理任务分配给备用线程;
备用线程执行模块34,用于通过系统内核,从至少一个处理器中调度分配处理器来执行所述备用线程。
本发明实施例通过绑定处理器与主线程执行处理任务,同时设置备用线程与处理器的调度分配关系,解决了线程切换前后需要保护和恢复上下文信息,因此频繁切换线程会导致资源的浪费的问题。实现了对各处理任务的合理调度,且兼顾无人车系统的资源成本。
在上述实施例的基础上,备用线程执行模块还用于:
通过系统内核,根据所述备用线程与其他所有线程所处理任务的优先级,在多个处理器中调度分配一个处理器给所述备用线程。
在上述实施例的基础上,处理任务获取模块还用于:
通过所述主线程,对所述任务队列中的各处理任务进行遍历,以监测接收到执行通知消息的处理任务,作为新触发处理任务。
在上述实施例的基础上,处理任务的优先级根据所述处理任务在任务队列中的顺序或拓扑关系确定。
在上述实施例的基础上,备用线程分配模块33还用于:
创建一个备用线程,或者从备用线程池中确定一个备用线程;
为所述备用线程设置执行优先级的等级,其中,所述备用线程的执行优先级的等级与所述新触发处理任务的优先级匹配;
将所述新触发处理任务分配给所述备用线程。
其中,所述备用线程的执行优先级的等级大于所述主线程的执行优先级的等级。
在上述实施例的基础上,备用线程分配模块33还用于:
将所述备用线程配置为由所述主线程的绑定处理器来执行。
在上述实施例的基础上,还包括线程状态设定模块,用于:
在所述备用线程执行完该新触发处理任务时,设置所述备用线程的状态为等待状态。
在上述实施例的基础上,所述方法适用于无人车系统,所述处理任务对应于所述无人车系统中的功能模块,其中,所述功能模块至少包括:规划模块、感知模块和驾驶模块。
本实施例提供的一种任务调度装置可用于执行上述任意实施例提供的一种任务调度方法,具有相应的功能和有益效果。
实施例四
图4为本发明实施例四提供的一种电子设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性设备102的框图。图4显示的设备102仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。该设备可选为车载控制设备,例如为无人驾驶车辆上的车载控制器。
如图4所示,设备102以通用计算设备的形式表现。设备102的组件可以包括但不限于:一个或者多个处理器或者处理单元106,系统存储器208,连接不同系统组件(包括系统存储器208和处理单元106)的总线108。
总线108表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备102典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备102访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器208可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)300和/或高速缓存存储器302。设备102可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统304可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线108相连。存储器208可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块402的程序/实用工具400,可以存储在例如存储器208中,这样的程序模块402包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块402通常执行本发明实施例所描述的实施例中的功能和/或方法。
设备102也可以与一个或多个外部设备104(例如键盘、指向设备、显示器204等)通信,还可与一个或者多个使得用户能与该设备102交互的设备通信,和/或与使得该设备102能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口202进行。并且,设备102还可以通过网络适配器200与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器200通过总线108与设备102的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元106通过运行存储在系统存储器208中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种任务调度方法。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的一种任务调度方法,包括:
通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行所述主线程,以执行该处理任务;
获取新触发处理任务;
如果所述新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则将所述新触发处理任务分配给备用线程;
通过系统内核,从至少一个处理器中调度分配处理器来执行所述备用线程。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种任务调度方法,其特征在于,包括:
通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行所述主线程,以执行该处理任务;其中,分配给所述任务队列的处理任务之间具有拓扑关系;
获取新触发处理任务;
如果所述新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则创建一个备用线程,或者从备用线程池中确定一个备用线程;将所述备用线程配置为由所述主线程的绑定处理器来执行;为所述备用线程设置执行优先级的等级,其中,所述备用线程的执行优先级的等级与所述新触发处理任务的优先级匹配;将所述新触发处理任务分配给所述备用线程;
通过系统内核,调度分配所述主线程的绑定处理器来执行所述备用线程。
2.根据权利要求1所述的方法,其特征在于,获取新触发处理任务包括:
通过所述主线程,对所述任务队列中的各处理任务进行遍历,以监测接收到执行通知消息的处理任务,作为新触发处理任务。
3.根据权利要求1所述的方法,其特征在于,所述处理任务的优先级是根据所述处理任务在任务队列中的顺序或拓扑关系确定的。
4.根据权利要求1所述的方法,其特征在于:
所述备用线程的执行优先级的等级大于所述主线程的执行优先级的等级。
5.根据权利要求1所述的方法,其特征在于,还包括:
在所述备用线程执行完该新触发处理任务时,设置所述备用线程的状态为等待状态。
6.根据权利要求1-5任一所述的方法,其特征在于:
所述方法适用于无人车系统,所述处理任务对应于所述无人车系统中的功能模块,其中,所述功能模块至少包括:规划模块、感知模块、和驾驶模块。
7.一种任务调度装置,其特征在于,包括:
处理任务执行模块,用于通过绑定处理器的主线程,从任务队列中获取待执行的处理任务,由绑定的处理器执行所述主线程,以执行该处理任务;其中,分配给所述任务队列的处理任务之间具有拓扑关系;
处理任务获取模块,用于获取新触发处理任务;
备用线程分配模块,用于如果所述新触发处理任务的优先级大于或等于主线程当前执行处理任务的优先级,则创建一个备用线程,或者从备用线程池中确定一个备用线程;将所述备用线程配置为由所述主线程的绑定处理器来执行;为所述备用线程设置执行优先级的等级,其中,所述备用线程的执行优先级的等级与所述新触发处理任务的优先级匹配;将所述新触发处理任务分配给所述备用线程;
备用线程执行模块,用于通过系统内核,调度分配所述主线程的绑定处理器来执行所述备用线程。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6任一所述的一种任务调度方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6任一所述的一种任务调度方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811003390.2A CN109117260B (zh) | 2018-08-30 | 2018-08-30 | 一种任务调度方法、装置、设备和介质 |
US16/516,055 US11294714B2 (en) | 2018-08-30 | 2019-07-18 | Method and apparatus for scheduling task, device and medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811003390.2A CN109117260B (zh) | 2018-08-30 | 2018-08-30 | 一种任务调度方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109117260A CN109117260A (zh) | 2019-01-01 |
CN109117260B true CN109117260B (zh) | 2021-01-01 |
Family
ID=64861615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811003390.2A Active CN109117260B (zh) | 2018-08-30 | 2018-08-30 | 一种任务调度方法、装置、设备和介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11294714B2 (zh) |
CN (1) | CN109117260B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947569B (zh) * | 2019-03-15 | 2021-04-06 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
CN111736452B (zh) * | 2019-03-25 | 2023-04-07 | 成都鼎桥通信技术有限公司 | 多系统控制方法、装置、设备以及存储介质 |
CN109992359A (zh) * | 2019-03-28 | 2019-07-09 | 深圳市创联时代科技有限公司 | 一种事务调度方法 |
US11537429B2 (en) * | 2019-12-19 | 2022-12-27 | Red Hat, Inc. | Sub-idle thread priority class |
CN111242943B (zh) * | 2020-01-22 | 2022-10-28 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、图像处理设备及存储介质 |
CN113377551A (zh) * | 2020-03-10 | 2021-09-10 | 北京京东乾石科技有限公司 | 无人车任务的分配方法、装置、电子设备及存储介质 |
CN111367629A (zh) * | 2020-03-30 | 2020-07-03 | 绿盟科技集团股份有限公司 | 一种延时任务处理方法及装置 |
CN111552567B (zh) * | 2020-04-27 | 2023-07-07 | 北京奇艺世纪科技有限公司 | 一种线程管理方法、装置、电子设备及存储介质 |
CN111694647A (zh) * | 2020-06-08 | 2020-09-22 | 北京百度网讯科技有限公司 | 用于自动驾驶车辆的任务调度方法、设备及存储介质 |
CN111858056B (zh) * | 2020-07-24 | 2021-12-17 | 南方电网数字电网研究院有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN112181621B (zh) * | 2020-09-27 | 2024-08-20 | 中国建设银行股份有限公司 | 一种任务调度系统、方法、设备及存储介质 |
CN115061794A (zh) * | 2020-09-29 | 2022-09-16 | 展讯通信(上海)有限公司 | 调度任务及训练神经网络模型的方法、装置、终端和介质 |
CN112463545A (zh) * | 2020-12-22 | 2021-03-09 | 上海金卓科技有限公司 | 一种操作系统的检测方法及装置 |
CN112685156A (zh) * | 2020-12-28 | 2021-04-20 | 北京五八信息技术有限公司 | 任务执行方法、装置、电子设备和计算机可读介质 |
CN112667380B (zh) * | 2020-12-30 | 2024-09-24 | 珠海亿智电子科技有限公司 | 多处理器任务调度方法、装置及存储介质 |
CN113064739A (zh) * | 2021-03-31 | 2021-07-02 | 北京达佳互联信息技术有限公司 | 线程间通信方法、装置、电子设备及存储介质 |
CN113138883B (zh) * | 2021-05-14 | 2024-02-02 | 北京字节跳动网络技术有限公司 | 消息处理方法、装置、存储介质及电子设备 |
CN113268324A (zh) * | 2021-05-19 | 2021-08-17 | 大箴(杭州)科技有限公司 | 一种任务调度方法及装置、存储介质、计算机设备 |
CN113268325B (zh) * | 2021-05-21 | 2024-09-06 | 北京达佳互联信息技术有限公司 | 一种调度任务的方法、装置及存储介质 |
CN113377517B (zh) * | 2021-06-28 | 2023-02-28 | 上海鲲宜软件技术有限公司 | 基于实时操作系统的线程调度方法及系统 |
CN113379308A (zh) * | 2021-06-30 | 2021-09-10 | 北京斯年智驾科技有限公司 | 一种任务派发方法、装置、电子设备和存储介质 |
CN113627775B (zh) * | 2021-08-04 | 2024-01-19 | 昆山塔米机器人有限公司 | 机器人的调度方法、装置、设备和存储介质 |
CN114418282A (zh) * | 2021-12-08 | 2022-04-29 | 交控科技股份有限公司 | 车站场景管理方法、装置、设备及计算机程序产品 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051330B1 (en) * | 2000-11-21 | 2006-05-23 | Microsoft Corporation | Generic application server and method of operation therefor |
US6886041B2 (en) * | 2001-10-05 | 2005-04-26 | Bea Systems, Inc. | System for application server messaging with multiple dispatch pools |
US8015392B2 (en) * | 2004-09-29 | 2011-09-06 | Intel Corporation | Updating instructions to free core in multi-core processor with core sequence table indicating linking of thread sequences for processing queued packets |
US8230422B2 (en) * | 2005-01-13 | 2012-07-24 | International Business Machines Corporation | Assist thread for injecting cache memory in a microprocessor |
CN100442709C (zh) * | 2005-06-17 | 2008-12-10 | 华为技术有限公司 | 一种网络管理系统中的设备操作方法 |
US8595744B2 (en) * | 2006-05-18 | 2013-11-26 | Oracle America, Inc. | Anticipatory helper thread based code execution |
US8656145B2 (en) * | 2008-09-19 | 2014-02-18 | Qualcomm Incorporated | Methods and systems for allocating interrupts in a multithreaded processor |
CN101403982B (zh) * | 2008-11-03 | 2011-07-20 | 华为技术有限公司 | 一种多核处理器的任务分配方法和系统 |
US20100153957A1 (en) * | 2008-12-16 | 2010-06-17 | Sensormatic Electronics Corporation | System and method for managing thread use in a thread pool |
JP5091912B2 (ja) * | 2009-05-21 | 2012-12-05 | 株式会社東芝 | マルチコアプロセッサシステム |
KR101271211B1 (ko) * | 2009-08-18 | 2013-06-07 | 한국전자통신연구원 | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 |
CA2680601C (en) * | 2009-10-16 | 2010-11-02 | Ibm Canada Limited - Ibm Canada Limitee | Managing multiple speculative assist threads at differing cache levels |
CN102222037B (zh) * | 2010-04-15 | 2014-04-02 | 国际商业机器公司 | 用于定位java程序的瓶颈的方法和设备 |
US8423750B2 (en) * | 2010-05-12 | 2013-04-16 | International Business Machines Corporation | Hardware assist thread for increasing code parallelism |
US20120005457A1 (en) * | 2010-07-01 | 2012-01-05 | International Business Machines Corporation | Using software-controlled smt priority to optimize data prefetch with assist thread |
AU2010249337A1 (en) * | 2010-12-13 | 2012-06-28 | Canon Kabushiki Kaisha | Predicting the times of future events in a multi-threaded RIP |
US9838242B2 (en) * | 2011-04-13 | 2017-12-05 | Jetflow Technologies | Flowlet-based processing with key/value store checkpointing |
GB2491165A (en) * | 2011-05-26 | 2012-11-28 | Realvnc Ltd | Mobile device having a priority adjusting thread for link wi th remote terminal |
KR101915198B1 (ko) * | 2012-08-10 | 2018-11-05 | 한화테크윈 주식회사 | 프로세서간 메시지처리장치 및 방법 |
CN103197968B (zh) * | 2013-03-18 | 2016-03-30 | 焦点科技股份有限公司 | 一种融合同步异步特点的线程池处理方法及系统 |
US9569260B2 (en) * | 2013-05-31 | 2017-02-14 | Microsoft Technology Licensing, Llc | Efficient priority-aware thread scheduling |
US9697579B2 (en) * | 2013-06-07 | 2017-07-04 | Apple Inc. | Multi-processor graphics rendering |
US9563474B2 (en) * | 2013-06-13 | 2017-02-07 | Wipro Limited | Methods for managing threads within an application and devices thereof |
US10089142B2 (en) * | 2013-08-21 | 2018-10-02 | Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh | Dynamic task prioritization for in-memory databases |
CN103593236B (zh) * | 2013-11-14 | 2017-02-22 | 华为技术有限公司 | 一种业务流程调度的计算机设备、方法和装置 |
CN105357239B (zh) * | 2014-08-20 | 2020-05-12 | 新华三技术有限公司 | 提供服务的方法和装置、获取服务的方法及装置 |
CN104375882B (zh) * | 2014-11-21 | 2016-06-01 | 北京应用物理与计算数学研究所 | 匹配于高性能计算机结构的多级嵌套数据驱动计算方法 |
US9785480B2 (en) * | 2015-02-12 | 2017-10-10 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
US9747108B2 (en) * | 2015-03-27 | 2017-08-29 | Intel Corporation | User-level fork and join processors, methods, systems, and instructions |
US10423330B2 (en) * | 2015-07-29 | 2019-09-24 | International Business Machines Corporation | Data collection in a multi-threaded processor |
US10509677B2 (en) * | 2015-09-30 | 2019-12-17 | Lenova (Singapore) Pte. Ltd. | Granular quality of service for computing resources |
US9715414B2 (en) * | 2015-10-23 | 2017-07-25 | Oracle International Corporation | Scan server for dual-format database |
CN105893126B (zh) * | 2016-03-29 | 2019-06-11 | 华为技术有限公司 | 一种任务调度方法及装置 |
US10445442B2 (en) * | 2016-09-01 | 2019-10-15 | Energid Technologies Corporation | System and method for game theory-based design of robotic systems |
US10216496B2 (en) * | 2016-09-27 | 2019-02-26 | International Business Machines Corporation | Dynamic alias checking with transactional memory |
US10185587B2 (en) * | 2016-10-06 | 2019-01-22 | International Business Machines Corporation | Wait-free process request execution utilizing a dedicated helper thread |
US10719350B2 (en) * | 2017-10-10 | 2020-07-21 | Sap Se | Worker thread manager |
-
2018
- 2018-08-30 CN CN201811003390.2A patent/CN109117260B/zh active Active
-
2019
- 2019-07-18 US US16/516,055 patent/US11294714B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN109117260A (zh) | 2019-01-01 |
US11294714B2 (en) | 2022-04-05 |
US20200073709A1 (en) | 2020-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109117260B (zh) | 一种任务调度方法、装置、设备和介质 | |
US9513962B2 (en) | Migrating a running, preempted workload in a grid computing system | |
US9396012B2 (en) | Systems and methods of using a hypervisor with guest operating systems and virtual processors | |
US8424007B1 (en) | Prioritizing tasks from virtual machines | |
US8850439B2 (en) | Storage subsystem device driver scheduling I/O servicing according to priority of identified process | |
CN109298901B (zh) | 无人车中对象处理方法、装置、设备、存储介质和车辆 | |
US20140033212A1 (en) | Multi-Tenant Queue Controller | |
TWI460659B (zh) | 用於降低競爭之鎖定窗 | |
US9213560B2 (en) | Affinity of virtual processor dispatching | |
CN107515781B (zh) | 一种基于多处理器的确定性任务调度及负载均衡系统 | |
CN111190712A (zh) | 一种任务调度方法、装置、设备及介质 | |
CN103049328A (zh) | 计算机系统中内存资源分配方法 | |
CN110851276A (zh) | 一种业务请求处理方法、装置、服务器和存储介质 | |
CN111625339A (zh) | 集群资源调度方法、装置、介质和计算设备 | |
KR20170023280A (ko) | 멀티코어 프로세서 시스템 및 상기 시스템에서의 공유 캐시 관리 방법 | |
CN112114958A (zh) | 资源隔离方法、分布式平台、计算机设备和存储介质 | |
CN113268331A (zh) | 机器人调用方法、机器人调用装置、管理系统和存储介质 | |
US10831557B2 (en) | Task management using a virtual node | |
JP2015148909A (ja) | 並列計算機システム、並列計算機システムの制御方法及び管理ノードの制御プログラム | |
US10884950B2 (en) | Importance based page replacement | |
KR20110018618A (ko) | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 | |
JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
CN113888028A (zh) | 巡视任务分配方法、装置、电子设备以及存储介质 | |
CN114253686A (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN114513547B (zh) | 模块的节点调度方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211019 Address after: 105 / F, building 1, No. 10, Shangdi 10th Street, Haidian District, Beijing 100085 Patentee after: Apollo Intelligent Technology (Beijing) Co.,Ltd. Address before: 100085 Baidu Building, 10 Shangdi Tenth Street, Haidian District, Beijing Patentee before: BAIDU ONLINE NETWORK TECHNOLOGY (BEIJING) Co.,Ltd. |
|
TR01 | Transfer of patent right |