CN110162387A - 线程调度方法、装置、计算机设备及计算机可读存储介质 - Google Patents
线程调度方法、装置、计算机设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110162387A CN110162387A CN201910282239.5A CN201910282239A CN110162387A CN 110162387 A CN110162387 A CN 110162387A CN 201910282239 A CN201910282239 A CN 201910282239A CN 110162387 A CN110162387 A CN 110162387A
- Authority
- CN
- China
- Prior art keywords
- thread
- scheduling
- file
- association
- concurrent
- 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.)
- Pending
Links
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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种线程调度方法、装置、计算机设备及计算机可读存储介质,涉及互联网技术领域,可以在接收到线程调度请求时,获取包括线程编码文件以及线程之间依赖关系的配置文件,通过配置文件实现待调度线程的调度,使得可以参照配置文件中的编码文件和依赖关系调度任意线程,保证本次流程不相关的线程不会被调度,节省了大量的线程资源,提高了系统性能。所述方法包括:当接收到线程调度请求时,获取配置文件;在线程调度请求中获取待调度线程,并在配置文件中确定待调度线程的第一关联线程;基于待调度线程以及第一关联线程,在配置文件中提取多个目标编码文件;执行并发调度算法,基于并发调度算法对多个目标编码文件进行调度。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种线程调度方法、装置、计算机设备及计算机可读存储介质。
背景技术
随着互联网技术的飞速发展,智能终端等具有界面浏览功能的电子设备与互联网交互的信息量越来越大,为了满足用户基于智能手机执行的各种关于信息的请求,通常来说,智能终端的数据处理过程主要在线程中执行。线程是智能终端的程序中一个单一的顺序控制流程,在实际应用的过程中,考虑到智能终端需要基于程序完成多个不同的任务,因此,智能终端的程序中会同时运行多个线程来完成不同的工作。多个线程在运行时是存在依赖关系的,也即某一个任务可能需要依次调度多个线程中的某几个线程才能实现,这样,便需要定义线程之间的依赖关系,以便后续基于依赖关系对线程进行调度。
相关技术中,程序中设置有诸如Dexecutor(并发线程框架)等的并发线程框架,将需要配置的线程接入至并发线程框架中,采用该并发线程框架来建立线程之间的依赖关系,并在用户请求进行线程调度时,向该并发线程框架下发指令来调度。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
向线程框架下发指令来调度线程时,整个线程框架内的线程都会被调度,使得有些在本次调度中无需被调度的线程也会被调度,导致大量的线程资源被浪费,系统性能随之降低。
发明内容
有鉴于此,本发明提供了一种线程调度方法、装置、计算机设备及计算机可读存储介质,主要目的在于解决目前大量的线程资源被浪费,系统性能随之降低的问题。
依据本发明第一方面,提供了一种线程调度方法,该方法包括:
当接收到线程调度请求时,获取配置文件,所述配置文件包括全部线程对应的编码文件以及所述全部线程对应的依赖关系;
在所述线程调度请求中获取待调度线程,并在所述配置文件中确定所述待调度线程的至少一个第一关联线程,所述至少一个第一关联线程与所述待调度线程之间存在依赖关系;
基于所述待调度线程以及所述至少一个第一关联线程,在所述配置文件中提取多个目标编码文件,所述多个目标编码文件为所述待调度线程以及所述至少一个第一关联线程对应的编码文件;
执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度。
在另一个实施例中,所述当接收到线程调度请求时,获取配置文件之前,包括:
对于所述全部线程中的任一线程,启动对所述线程的调度,对所述线程的调度过程进行监控;
确定所述线程在调度过程中请求调度线程的第一线程标识,将所述第一线程标识指示的线程作为所述线程的依赖关系;
获取所述线程的第二线程标识,采用所述线程的第二线程标识对所述依赖关系进行标记;
重复执行上述确定依赖关系的过程,为所述全部线程确定依赖关系;
获取所述全部线程对应的编码文件,将所述全部线程对应的编码文件与所述全部线程对应的依赖关系进行打包,生成所述配置文件。
在另一个实施例中,所述获取所述全部线程对应的编码文件,包括:
对于所述全部线程中的任一线程,确定所述线程的调度过程涉及的调度代码、调度文件以及调度接口;
提取所述调度文件的文件标识以及所述调度接口的接口标识,将所述调度代码、所述文件标识和所述接口标识打包,生成所述线程的编码文件;
重复执行上述生成编码文件的过程,获取所述全部线程对应的编码文件。
在另一个实施例中,所述在所述线程调度请求中获取待调度线程,并在所述配置文件中确定所述待调度线程的至少一个第一关联线程,包括:
对所述线程调度请求进行信息提取,获取所述待调度线程;
确定所述待调度线程的待调度线程标识,基于所述待调度线程标识在所述配置文件中进行查询;
提取采用所述待调度线程标识进行标记的目标依赖关系,将所述目标依赖关系中包括的至少一个线程作为所述待调度线程的至少一个第一关联线程。
在另一个实施例中,所述基于所述待调度线程以及所述至少一个第一关联线程,在所述配置文件中提取多个目标编码文件之后,所述方法还包括:
获取所述至少一个第一关联线程的至少一个第一关联线程标识,在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系;
相应地,如果在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系失败,则执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度;
如果在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系成功,则根据所述至少一个第一关联线程标识对应的依赖关系,确定至少一个第二关联线程,获取所述至少一个第二关联线程的关联编码文件,执行所述并发调度算法,基于所述并发调度算法对所述多个目标编码文件以及所述关联编码文件进行调度。
在另一个实施例中,所述执行所述并发调度算法,基于所述并发调度算法对所述多个目标编码文件以及所述关联编码文件进行调度,包括:
执行所述并发调度算法,启动并发线程池;
将所述关联编码文件添加至所述并发线程池,基于所述并发线程池执行所述关联编码文件的调度;
当基于所述并发线程池完成执行所述关联编码文件的调度时,将所述多个目标编码文件添加至所述并发线程池,基于所述并发线程池执行所述多个目标编码文件的调度。
在另一个实施例中,所述执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度,包括:
执行所述并发调度算法,启动并发线程池,所述并发线程池并发执行添加的目标编码文件;
基于所述并发线程池,执行所述多个目标编码文件的并行调度。
依据本发明第二方面,提供了一种线程调度装置,该装置包括:
获取模块,用于当接收到线程调度请求时,获取配置文件,所述配置文件包括全部线程对应的编码文件以及所述全部线程对应的依赖关系;
第一确定模块,用于在所述线程调度请求中获取待调度线程,并在所述配置文件中确定所述待调度线程的至少一个第一关联线程,所述至少一个第一关联线程与所述待调度线程之间存在依赖关系;
提取模块,用于基于所述待调度线程以及所述至少一个第一关联线程,在所述配置文件中提取多个目标编码文件,所述多个目标编码文件为所述待调度线程以及所述至少一个第一关联线程对应的编码文件;
调度模块,用于执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度。
在另一个实施例中,所述装置还包括:
监控模块,用于对于所述全部线程中的任一线程,启动对所述线程的调度,对所述线程的调度过程进行监控;
第二确定模块,用于确定所述线程在调度过程中请求调度线程的第一线程标识,将所述第一线程标识指示的线程作为所述线程的依赖关系;
标记模块,用于获取所述线程的第二线程标识,采用所述线程的第二线程标识对所述依赖关系进行标记;
所述第二确定模块,还用于重复执行上述确定依赖关系的过程,为所述全部线程确定依赖关系;
生成模块,用于获取所述全部线程对应的编码文件,将所述全部线程对应的编码文件与所述全部线程对应的依赖关系进行打包,生成所述配置文件。
在另一个实施例中,所述生成模块,包括:
确定单元,用于对于所述全部线程中的任一线程,确定所述线程的调度过程涉及的调度代码、调度文件以及调度接口;
生成单元,用于提取所述调度文件的文件标识以及所述调度接口的接口标识,将所述调度代码、所述文件标识和所述接口标识打包,生成所述线程的编码文件;
所述确定单元,用于重复执行上述生成编码文件的过程,获取所述全部线程对应的编码文件。
在另一个实施例中,所述第一确定模块,包括:
提取单元,用于对所述线程调度请求进行信息提取,获取所述待调度线程;
查询单元,用于确定所述待调度线程的待调度线程标识,基于所述待调度线程标识在所述配置文件中进行查询;
确定单元,用于提取采用所述待调度线程标识进行标记的目标依赖关系,将所述目标依赖关系中包括的至少一个线程作为所述待调度线程的至少一个第一关联线程。
在另一个实施例中,所述装置还包括:
查询模块,用于获取所述至少一个第一关联线程的至少一个第一关联线程标识,在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系;
相应地,所述调度模块,用于如果在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系失败,则执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度;
所述调度模块,还用于如果在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系成功,则根据所述至少一个第一关联线程标识对应的依赖关系,确定至少一个第二关联线程,获取所述至少一个第二关联线程的关联编码文件,执行所述并发调度算法,基于所述并发调度算法对所述多个目标编码文件以及所述关联编码文件进行调度。
在另一个实施例中,所述调度模块,用于执行所述并发调度算法,启动并发线程池;将所述关联编码文件添加至所述并发线程池,基于所述并发线程池执行所述关联编码文件的调度;当基于所述并发线程池完成执行所述关联编码文件的调度时,将所述多个目标编码文件添加至所述并发线程池,基于所述并发线程池执行所述多个目标编码文件的调度。
在另一个实施例中,所述调度模块,包括:
执行单元,用于执行所述并发调度算法,启动并发线程池,所述并发线程池并发执行添加的目标编码文件;
调度单元,用于基于所述并发线程池,执行所述多个目标编码文件的并行调度。
依据本发明第三方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。
依据本发明第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法的步骤。
借由上述技术方案,本发明提供的一种线程调度方法、装置、计算机设备及计算机可读存储介质,与目前向线程框架下发指令来调度线程的方式相比,本发明在接收到线程调度请求时,获取包括线程编码文件以及规定了线程之间依赖关系的配置文件,通过配置文件确定待调度线程与其他线程之间的依赖关系,提取到与待调度线程之间存在依赖关系的线程的编码文件进行调度,从而实现待调度线程的调度,使得可以参照配置文件中的编码文件和依赖关系调度任意线程,保证本次流程不相关的线程不会被调度,节省了大量的线程资源,提高了系统性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种线程调度方法流程示意图;
图2A示出了本发明实施例提供的一种线程调度方法流程示意图;
图2B示出了本发明实施例提供的一种线程调度方法流程示意图;
图2C示出了本发明实施例提供的一种线程调度方法流程示意图;
图3A示出了本发明实施例提供的一种线程调度装置的结构示意图;
图3B示出了本发明实施例提供的一种线程调度装置的结构示意图;
图3C示出了本发明实施例提供的一种线程调度装置的结构示意图;
图3D示出了本发明实施例提供的一种线程调度装置的结构示意图;
图3E示出了本发明实施例提供的一种线程调度装置的结构示意图;
图3F示出了本发明实施例提供的一种线程调度装置的结构示意图;
图4示出了本发明实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种线程调度方法,可以在接收到线程调度请求时,获取包括线程编码文件以及规定了线程之间依赖关系的配置文件,通过配置文件确定待调度线程与其他线程之间的依赖关系,提取到与待调度线程之间存在依赖关系的线程的编码文件进行调度,从而实现待调度线程的调度,使得可以参照配置文件中的编码文件和依赖关系调度任意线程,保证本次流程不相关的线程不会被调度,达到了节省了大量的线程资源,提高了系统性能的目的,如图1所示,该方法包括:
101、当接收到线程调度请求时,获取配置文件,配置文件包括全部线程对应的编码文件以及全部线程对应的依赖关系。
102、在线程调度请求中获取待调度线程,并在配置文件中确定待调度线程的至少一个第一关联线程,至少一个第一关联线程与待调度线程之间存在依赖关系。
103、基于待调度线程以及至少一个第一关联线程,在配置文件中提取多个目标编码文件,多个目标编码文件为待调度线程以及至少一个第一关联线程对应的编码文件。
104、执行并发调度算法,基于并发调度算法对多个目标编码文件进行调度。
本发明实施例提供的方法,可以在接收到线程调度请求时,获取包括线程编码文件以及规定了线程之间依赖关系的配置文件,通过配置文件确定待调度线程与其他线程之间的依赖关系,提取到与待调度线程之间存在依赖关系的线程的编码文件进行调度,从而实现待调度线程的调度,使得可以参照配置文件中的编码文件和依赖关系调度任意线程,保证本次流程不相关的线程不会被调度,节省了大量的线程资源,提高了系统性能。
本发明实施例提供了一种线程调度方法,可以在接收到线程调度请求时,获取包括线程编码文件以及规定了线程之间依赖关系的配置文件,通过配置文件确定待调度线程与其他线程之间的依赖关系,提取到与待调度线程之间存在依赖关系的线程的编码文件进行调度,从而实现待调度线程的调度,使得可以参照配置文件中的编码文件和依赖关系调度任意线程,保证本次流程不相关的线程不会被调度,达到了节省了大量的线程资源,提高了系统性能的目的,如图2A所示,该方法包括:
201、根据全部线程的调度过程,建立配置文件。
在本发明实施例中,发明人认识到,目前建立线程之间依赖关系使用的Dexecutor等的并发线程框架是不透明的,也即用户可以设置调度某一个线程,但是调度该线程具体依赖哪些其他线程用户是不知道的,对于一些特殊的场景来说,正常的线程调度过程可能无法满足,用户会希望可以自定义,因此,在本发明实施例中,用户可以根据全部线程的调度过程来自行建立配置文件。
具体地,由于配置文件不仅需要限定线程的依赖关系,还需要使线程能够成功调度,因此,配置文件中还要包括实现线程调度的必要文件,具体过程参见图2B,包括:
2011、启动对线程的调度,对线程的调度过程进行监控,确定线程在调度过程中请求调度线程的第一线程标识,将第一线程标识指示的线程作为线程的依赖关系。
以全部线程中的任一线程为例,为了使建立的配置文件中包括的依赖关系与该线程的实际调度过程是完全相符的,需要真正将线程调度,获取线程在被调度过程中的真实数据。具体地,首先,启动对线程的调度,并对线程的调度过程进行监控;随后,由于线程的调度过程很可能需要其他线程的协助才能完成,因此,确定线程在调度过程中请求调度线程的第一线程标识,表示该线程的调度需要该第一线程标识指示的线程进行协助才能完成;最后,便可以将该第一线程标识指示的线程作为该线程的依赖关系。
2012、获取线程的第二线程标识,采用线程的第二线程标识对依赖关系进行标记。
考虑到当前存在的全部线程的数量较大,每个线程都会形成与自身相关的依赖关系,为了对依赖关系进行区分,避免将不同线程的依赖关系混淆,可以获取该线程的第二线程标识,采用该第二线程标识对生成的依赖关系进行标记,从而将不同线程的依赖关系区分开。
通过重复执行上述步骤2011至步骤2012,便可为全部线程均生成与其对应的依赖关系,以便后续基于该依赖关系建立配置文件。在实际应用的过程中,为了使线程之间的依赖关系更加明朗且保证关系的可视化,可以采用节点表示每一个进程,使用节点组成一个Map(字典数据结构)的数据结构来存储线程之间的依赖关系,也即采用键值对的形式来存储依赖关系。具体地,可以采用数组表示依赖关系,例如,设线程Thread1,与线程Thread1存在依赖关系的线程分别为Thread2、Thread3和Thread4,则可将线程Thread1的依赖关系表示为Thread1:【Thread2,Thread3,Thread4】。
2013、获取全部线程对应的编码文件,将全部线程对应的编码文件与全部线程对应的依赖关系进行打包,生成配置文件。
在实际过程中,线程的调度不仅需要依赖其他的线程,还会依赖代码、文件和接口,因此,为了保证线程自身的正常调度,需要为线程生成保证其正常运行的编码文件,也即将线程插件化,并将编码文件也作为配置文件的组成部分,保证后续配置文件可以满足不同线程的正常调度需求。具体地,对于全部线程中的任一线程,首先,确定该线程的调度过程涉及的调度代码、调度文件以及调度接口;随后,提取调度文件的文件标识以及调度接口的接口标识,将调度代码、文件标识和接口标识打包,生成线程的编码文件。通过执行上述生成编码文件的过程,便可以获取到全部线程对应的编码文件。
在得到了全部线程的依赖关系以及编码文件后,便可以将全部线程对应的编码文件与全部线程对应的依赖关系进行打包,生成配置文件。为了使后续用户请求进行线程调度时可以直接获取到该配置文件,可将配置文件存储至数据库中。另外,配置文件可以在线程建立完毕后直接生成,并在后续每次的请求调度中直接获取使用,也可以在接收到线程调度请求时生成该配置文件。本发明实施例对配置文件的生成时机不进行具体限定。
202、当接收到线程调度请求时,获取配置文件。
在本发明实施例中,由于事先已经生成了有关线程调度的配置文件,且配置文件包括全部线程对应的编码文件以及全部线程对应的依赖关系,因此,当接收到线程调度请求时,可以获取该配置文件,并在后续基于该配置文件实现线程的调度。其中,由于配置文件存储在数据库中,因此,当接收到线程调度请求时,需要在数据库中获取配置文件。
需要说明的是,考虑到可能在接收到线程调度请求时尚未生成配置文件,因此,如果在数据库中获取配置文件失败了,则表示当前还没有生成配置文件,可以执行上述步骤201为线程生成配置文件。
203、在线程调度请求中获取待调度线程,并在配置文件中确定待调度线程的至少一个第一关联线程。
在本发明实施例中,为了确定具体用户希望调度哪一个线程,线程调度请求中会携带待调度线程,这样,便可以对线程调度请求进行信息提取,获取待调度线程。由于配置文件中为每一个线程都设置了依赖关系,因此,可以在配置文件中确定该待调度线程依赖的第一关联线程。具体地,配置文件中采用了线程标识对每一个依赖关系进行标记,因此,首先,确定待调度线程的待调度线程标识;随后,基于待调度线程标识在配置文件中进行查询,提取采用待调度线程标识进行标记的目标依赖关系,将目标依赖关系中包括的至少一个线程作为待调度线程的至少一个第一关联线程,便在后续基于该至少一个第一关联线程实现对该线程的调度。
204、基于待调度线程以及至少一个第一关联线程,在配置文件中提取多个目标编码文件。
在本发明实施例中,第一关联线程实质也是独立的线程,也即第一关联线程的调度也是需要依赖自身的编码文件的,且配置文件中是包括了第一关联线程的编码文件的,因此,为了保证至少一个第一关联线程可以正常运行,不仅需要提取待调度线程在配置文件中的编码文件,还需要提取至少一个第一关联线程在配置文件中对应的编码文件,将待调度线程以及至少一个第一关联线程对应的编码文件同时作为目标编码文件,以便后续通过调度该目标编码文件来显示待调度线程以及至少一个第一关联线程的调度。
205、执行并发调度算法,基于并发调度算法对多个目标编码文件进行调度。
在本发明实施例中,当提取到多个目标编码文件后,便可以对该多个编码文件进行调度。其中,为了保证对线程调度的并行机制,需要执行并发调度算法,并基于该并发调度算法对多个目标编码文件进行调度。具体地,对多个目标编码文件进行调度的过程可以参见图2C,包括:
2051、获取至少一个第一关联线程的至少一个第一关联线程标识,在配置文件中查询至少一个第一关联线程标识对应的依赖关系,如果在配置文件中查询至少一个第一关联线程标识对应的依赖关系失败,则执行下述步骤2052;如果在配置文件中查询至少一个第一关联线程标识对应的依赖关系成功,则执行下述步骤2053至步骤2055。
在实际应用的过程中,考虑到至少一个第一关联线程中可能存在一些第一关联线程在配置文件中对应有依赖关系的,这些第一关联线程在执行的过程中也是需要按照依赖关系的指示才可以实现调度的,因此,还需要确定至少一个第一关联线程是否在配置文件中存在依赖关系。具体地,可以获取至少一个第一关联线程的至少一个第一关联线程标识,在配置文件中查询至少一个第一关联线程标识对应的依赖关系。
2052、如果在配置文件中查询至少一个第一关联线程标识对应的依赖关系失败,则执行并发调度算法,启动并发线程池,基于并发线程池,执行多个目标编码文件的并行调度。
在本发明实施例中,如果在配置文件中查询至少一个第一关联线程标识对应的依赖关系失败,则表示至少一个第一关联线程是不存在依赖关系的,至少一个第一关联线程可以独立进行调度,也即至少一个第一关联线程为出边节点,是不存在入边的,因此,可以直接执行并发调度算法,基于并发调度算法对多个目标编码文件进行调度。
其中,为了执行并发调度算法,系统中设置有并发线程池,并发线程池用于并发执行添加的目标编码文件,这样,当执行并发调度算法时,首先,启动并发线程池;随后,基于并发线程池,执行多个目标编码文件的并行调度。在实际应用的过程中,考虑到并发线程池中可能会包括不同线程的第一关联线程在同步执行,为了记录本次的线程调度中涉及的第一关联线程是否全部调度完成,可以设置一个计数器,将计数器设置为本次需要调度的第一关联线程的线程个数,并每次完成一个关联线程的调度后便将计数器的数字减少1,直至计数器的计数为0。
另外,考虑到不同线程完成调度的时间是不同的,当一个线程完成调度后便不需要再次调度了,因此,可以设置一个安全队列,将并发线程池中完成调度的线程移动至安全队列中,基于该安全队列来记录已经完成调度的线程。
2053、如果在配置文件中查询至少一个第一关联线程标识对应的依赖关系成功,则根据至少一个第一关联线程标识对应的依赖关系,确定至少一个第二关联线程,获取至少一个第二关联线程的关联编码文件。
在本发明实施例中,如果在配置文件中查询至少一个第一关联线程标识对应的依赖关系成功,则表示至少一个第一关联线程在配置文件中是存在依赖关系的,需要基于每个第一关联线程的依赖关系来实现第一关联线程的调度,因此,需要根据至少一个第一关联线程标识对应的依赖关系,确定至少一个第二关联线程,获取至少一个第二关联线程的关联编码文件。具体确定关联编码文件的方式与上述步骤203至步骤204中所示的确定目标编码文件的过程一致,此处不再进行赘述。
2054、执行并发调度算法,启动并发线程池,将关联编码文件添加至并发线程池,基于并发线程池执行关联编码文件的调度。
在本发明实施例中,由于关联编码文件为第一关联线程的依赖关系指示的编码文件,只有关联编码文件调度成功了才会使第一关联线程调度成功,因此,需要先将关联编码文件并发执行,完成了关联编码文件的执行后再继续调度目标编码文件。其中,调度关联编码文件的过程与上述步骤2052中的过程一致,此处不再进行赘述。
2055、当基于并发线程池完成执行关联编码文件的调度时,将多个目标编码文件添加至并发线程池,基于并发线程池执行多个目标编码文件的调度。
在本发明实施例中,当基于并发线程池完成执行关联编码文件的调度时,便可以继续并发执行多个目标编码文件的调度。其中,调度多个目标编码文件的过程与上述步骤2052中的过程一致,此处不再进行赘述。
本发明提供的方法,在接收到线程调度请求时,获取包括线程编码文件以及规定了线程之间依赖关系的配置文件,通过配置文件确定待调度线程与其他线程之间的依赖关系,提取到与待调度线程之间存在依赖关系的线程的编码文件进行调度,从而实现待调度线程的调度,使得可以参照配置文件中的编码文件和依赖关系调度任意线程,保证本次流程不相关的线程不会被调度,节省了大量的线程资源,提高了系统性能。
进一步地,作为图1所述方法的具体实现,本发明实施例提供了一种线程调度装置,如图3A所示,所述装置包括:获取模块301,第一确定模块302,提取模块303和调度模块304。
该获取模块301,用于当接收到线程调度请求时,获取配置文件,所述配置文件包括全部线程对应的编码文件以及所述全部线程对应的依赖关系;
该第一确定模块302,用于在所述线程调度请求中获取待调度线程,并在所述配置文件中确定所述待调度线程的至少一个第一关联线程,所述至少一个第一关联线程与所述待调度线程之间存在依赖关系;
该提取模块303,用于基于所述待调度线程以及所述至少一个第一关联线程,在所述配置文件中提取多个目标编码文件,所述多个目标编码文件为所述待调度线程以及所述至少一个第一关联线程对应的编码文件;
该调度模块304,用于执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度。
在具体的应用场景中,如图3B所示,该装置还包括:监控模块305,第二确定模块306,标记模块307和生成模块308。
该监控模块305,用于对于所述全部线程中的任一线程,启动对所述线程的调度,对所述线程的调度过程进行监控;
该第二确定模块306,用于确定所述线程在调度过程中请求调度线程的第一线程标识,将所述第一线程标识指示的线程作为所述线程的依赖关系;
该标记模块307,用于获取所述线程的第二线程标识,采用所述线程的第二线程标识对所述依赖关系进行标记;
该第二确定模块306,还用于重复执行上述确定依赖关系的过程,为所述全部线程确定依赖关系;
该生成模块308,用于获取所述全部线程对应的编码文件,将所述全部线程对应的编码文件与所述全部线程对应的依赖关系进行打包,生成所述配置文件。
在具体的应用场景中,如图3C所示,该生成模块308,包括:确定单元3081和生成单元3082。
该确定单元3081,用于对于所述全部线程中的任一线程,确定所述线程的调度过程涉及的调度代码、调度文件以及调度接口;
该生成单元3082,用于提取所述调度文件的文件标识以及所述调度接口的接口标识,将所述调度代码、所述文件标识和所述接口标识打包,生成所述线程的编码文件;
该确定单元3081,用于重复执行上述生成编码文件的过程,获取所述全部线程对应的编码文件。
在具体的应用场景中,如图3D所示,该第一确定模块302,包括:提取单元3021,查询单元3022和确定单元3023。
该提取单元3021,用于对所述线程调度请求进行信息提取,获取所述待调度线程;
该查询单元3022,用于确定所述待调度线程的待调度线程标识,基于所述待调度线程标识在所述配置文件中进行查询;
该确定单元3023,用于提取采用所述待调度线程标识进行标记的目标依赖关系,将所述目标依赖关系中包括的至少一个线程作为所述待调度线程的至少一个第一关联线程。
在具体的应用场景中,如图3E所示,该装置还包括:查询模块309。
该查询模块309,用于获取所述至少一个第一关联线程的至少一个第一关联线程标识,在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系;
相应地,该调度模块304,用于如果在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系失败,则执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度;
该调度模块304,还用于如果在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系成功,则根据所述至少一个第一关联线程标识对应的依赖关系,确定至少一个第二关联线程,获取所述至少一个第二关联线程的关联编码文件,执行所述并发调度算法,基于所述并发调度算法对所述多个目标编码文件以及所述关联编码文件进行调度。
在具体的应用场景中,该调度模块304,用于执行所述并发调度算法,启动并发线程池;将所述关联编码文件添加至所述并发线程池,基于所述并发线程池执行所述关联编码文件的调度;当基于所述并发线程池完成执行所述关联编码文件的调度时,将所述多个目标编码文件添加至所述并发线程池,基于所述并发线程池执行所述多个目标编码文件的调度。
在具体的应用场景中,如图3F所示,该调度模块304,包括:执行单元3041和调度单元3042。
该执行单元3041,用于执行所述并发调度算法,启动并发线程池,所述并发线程池并发执行添加的目标编码文件;
该调度单元3042,用于基于所述并发线程池,执行所述多个目标编码文件的并行调度。
本发明实施例提供的装置,在接收到线程调度请求时,获取包括线程编码文件以及规定了线程之间依赖关系的配置文件,通过配置文件确定待调度线程与其他线程之间的依赖关系,提取到与待调度线程之间存在依赖关系的线程的编码文件进行调度,从而实现待调度线程的调度,使得可以参照配置文件中的编码文件和依赖关系调度任意线程,保证本次流程不相关的线程不会被调度,节省了大量的线程资源,提高了系统性能。
需要说明的是,本发明实施例提供的一种线程调度装置所涉及各功能单元的其他相应描述,可以参考图1和图2A至图2C中的对应描述,在此不再赘述。
在示例性实施例中,参见图4,还提供了一种设备,该设备400包括通信总线、处理器、存储器和通信接口,还可以包括、输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的线程调度方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的线程调度方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (10)
1.一种线程调度方法,其特征在于,包括:
当接收到线程调度请求时,获取配置文件,所述配置文件包括全部线程对应的编码文件以及所述全部线程对应的依赖关系;
在所述线程调度请求中获取待调度线程,并在所述配置文件中确定所述待调度线程的至少一个第一关联线程,所述至少一个第一关联线程与所述待调度线程之间存在依赖关系;
基于所述待调度线程以及所述至少一个第一关联线程,在所述配置文件中提取多个目标编码文件,所述多个目标编码文件为所述待调度线程以及所述至少一个第一关联线程对应的编码文件;
执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度。
2.根据权利要求1所述的方法,其特征在于,所述当接收到线程调度请求时,获取配置文件之前,包括:
对于所述全部线程中的任一线程,启动对所述线程的调度,对所述线程的调度过程进行监控;
确定所述线程在调度过程中请求调度线程的第一线程标识,将所述第一线程标识指示的线程作为所述线程的依赖关系;
获取所述线程的第二线程标识,采用所述线程的第二线程标识对所述依赖关系进行标记;
重复执行上述确定依赖关系的过程,为所述全部线程确定依赖关系;
获取所述全部线程对应的编码文件,将所述全部线程对应的编码文件与所述全部线程对应的依赖关系进行打包,生成所述配置文件。
3.根据权利要求2所述的方法,其特征在于,所述获取所述全部线程对应的编码文件,包括:
对于所述全部线程中的任一线程,确定所述线程的调度过程涉及的调度代码、调度文件以及调度接口;
提取所述调度文件的文件标识以及所述调度接口的接口标识,将所述调度代码、所述文件标识和所述接口标识打包,生成所述线程的编码文件;
重复执行上述生成编码文件的过程,获取所述全部线程对应的编码文件。
4.根据权利要求1所述的方法,其特征在于,所述在所述线程调度请求中获取待调度线程,并在所述配置文件中确定所述待调度线程的至少一个第一关联线程,包括:
对所述线程调度请求进行信息提取,获取所述待调度线程;
确定所述待调度线程的待调度线程标识,基于所述待调度线程标识在所述配置文件中进行查询;
提取采用所述待调度线程标识进行标记的目标依赖关系,将所述目标依赖关系中包括的至少一个线程作为所述待调度线程的至少一个第一关联线程。
5.根据权利要求1所述的方法,其特征在于,所述基于所述待调度线程以及所述至少一个第一关联线程,在所述配置文件中提取多个目标编码文件之后,所述方法还包括:
获取所述至少一个第一关联线程的至少一个第一关联线程标识,在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系;
相应地,如果在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系失败,则执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度;
如果在所述配置文件中查询所述至少一个第一关联线程标识对应的依赖关系成功,则根据所述至少一个第一关联线程标识对应的依赖关系,确定至少一个第二关联线程,获取所述至少一个第二关联线程的关联编码文件,执行所述并发调度算法,基于所述并发调度算法对所述多个目标编码文件以及所述关联编码文件进行调度。
6.根据权利要求5所述的方法,其特征在于,所述执行所述并发调度算法,基于所述并发调度算法对所述多个目标编码文件以及所述关联编码文件进行调度,包括:
执行所述并发调度算法,启动并发线程池;
将所述关联编码文件添加至所述并发线程池,基于所述并发线程池执行所述关联编码文件的调度;
当基于所述并发线程池完成执行所述关联编码文件的调度时,将所述多个目标编码文件添加至所述并发线程池,基于所述并发线程池执行所述多个目标编码文件的调度。
7.根据权利要求1所述的方法,其特征在于,所述执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度,包括:
执行所述并发调度算法,启动并发线程池,所述并发线程池并发执行添加的目标编码文件;
基于所述并发线程池,执行所述多个目标编码文件的并行调度。
8.一种线程调度装置,其特征在于,包括:
获取模块,用于当接收到线程调度请求时,获取配置文件,所述配置文件包括全部线程对应的编码文件以及所述全部线程对应的依赖关系;
第一确定模块,用于在所述线程调度请求中获取待调度线程,并在所述配置文件中确定所述待调度线程的至少一个第一关联线程,所述至少一个第一关联线程与所述待调度线程之间存在依赖关系;
提取模块,用于基于所述待调度线程以及所述至少一个第一关联线程,在所述配置文件中提取多个目标编码文件,所述多个目标编码文件为所述待调度线程以及所述至少一个第一关联线程对应的编码文件;
调度模块,用于执行并发调度算法,基于所述并发调度算法对所述多个目标编码文件进行调度。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910282239.5A CN110162387A (zh) | 2019-04-09 | 2019-04-09 | 线程调度方法、装置、计算机设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910282239.5A CN110162387A (zh) | 2019-04-09 | 2019-04-09 | 线程调度方法、装置、计算机设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110162387A true CN110162387A (zh) | 2019-08-23 |
Family
ID=67639100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910282239.5A Pending CN110162387A (zh) | 2019-04-09 | 2019-04-09 | 线程调度方法、装置、计算机设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110162387A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941791A (zh) * | 2019-11-19 | 2020-03-31 | 中国建设银行股份有限公司 | 一种可配置式算法实现方法及装置 |
CN111625330A (zh) * | 2020-05-18 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 跨线程的任务处理方法、装置、服务器及存储介质 |
CN111857970A (zh) * | 2020-07-29 | 2020-10-30 | 北京思特奇信息技术股份有限公司 | 一种基于多依赖进程的调度方法和系统 |
CN113704995A (zh) * | 2021-08-26 | 2021-11-26 | 中国人民解放军国防科技大学 | 基于非支配不等式的不相关并行机调度方法及其相关设备 |
CN113821486A (zh) * | 2021-11-22 | 2021-12-21 | 北京金堤科技有限公司 | pod库之间依赖关系的确定方法及其装置、电子设备 |
CN114090112A (zh) * | 2021-10-27 | 2022-02-25 | 青岛海尔科技有限公司 | 配置文件的加载方法和装置、存储介质及电子装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2321543A (en) * | 1996-12-16 | 1998-07-29 | Ibm | Constructing a program including a navigation instruction |
US6212542B1 (en) * | 1996-12-16 | 2001-04-03 | International Business Machines Corporation | Method and system for executing a program within a multiscalar processor by processing linked thread descriptors |
CN101324851A (zh) * | 2007-06-12 | 2008-12-17 | 华为技术有限公司 | 线程调度方法及其装置 |
CN101620527A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 图形处理中管理活动线程依赖关系 |
CN108667636A (zh) * | 2017-03-27 | 2018-10-16 | 中兴通讯股份有限公司 | 配置信息恢复方法、装置、存储器和计算机设备 |
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
-
2019
- 2019-04-09 CN CN201910282239.5A patent/CN110162387A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2321543A (en) * | 1996-12-16 | 1998-07-29 | Ibm | Constructing a program including a navigation instruction |
US6212542B1 (en) * | 1996-12-16 | 2001-04-03 | International Business Machines Corporation | Method and system for executing a program within a multiscalar processor by processing linked thread descriptors |
CN101324851A (zh) * | 2007-06-12 | 2008-12-17 | 华为技术有限公司 | 线程调度方法及其装置 |
CN101620527A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 图形处理中管理活动线程依赖关系 |
CN108667636A (zh) * | 2017-03-27 | 2018-10-16 | 中兴通讯股份有限公司 | 配置信息恢复方法、装置、存储器和计算机设备 |
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941791A (zh) * | 2019-11-19 | 2020-03-31 | 中国建设银行股份有限公司 | 一种可配置式算法实现方法及装置 |
CN111625330A (zh) * | 2020-05-18 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 跨线程的任务处理方法、装置、服务器及存储介质 |
CN111857970A (zh) * | 2020-07-29 | 2020-10-30 | 北京思特奇信息技术股份有限公司 | 一种基于多依赖进程的调度方法和系统 |
CN113704995A (zh) * | 2021-08-26 | 2021-11-26 | 中国人民解放军国防科技大学 | 基于非支配不等式的不相关并行机调度方法及其相关设备 |
CN113704995B (zh) * | 2021-08-26 | 2022-07-05 | 中国人民解放军国防科技大学 | 基于非支配不等式的不相关并行机调度方法及其相关设备 |
CN114090112A (zh) * | 2021-10-27 | 2022-02-25 | 青岛海尔科技有限公司 | 配置文件的加载方法和装置、存储介质及电子装置 |
CN114090112B (zh) * | 2021-10-27 | 2023-06-16 | 青岛海尔科技有限公司 | 配置文件的加载方法和装置、存储介质及电子装置 |
CN113821486A (zh) * | 2021-11-22 | 2021-12-21 | 北京金堤科技有限公司 | pod库之间依赖关系的确定方法及其装置、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162387A (zh) | 线程调度方法、装置、计算机设备及计算机可读存储介质 | |
US11325780B2 (en) | Method and device for sorting cargo | |
CN110276074B (zh) | 自然语言处理的分布式训练方法、装置、设备及存储介质 | |
CN109918184A (zh) | 图片处理系统、方法及相关装置和设备 | |
US11210127B2 (en) | Method and apparatus for processing request | |
CN112416585A (zh) | 面向深度学习的gpu资源管理与智能化调度方法 | |
CN110750331B (zh) | 一种针对教育桌面云应用的容器集群调度方法及平台 | |
CN104461710A (zh) | 任务处理方法及装置 | |
CN112241316A (zh) | 一种分布式调度应用的方法以及装置 | |
CN113779060A (zh) | 数据查询方法和装置 | |
CN111651140B (zh) | 基于工作流的服务方法及装置 | |
CN104408068A (zh) | 一种报表数据处理方法及相关设备 | |
CN107229656A (zh) | 全量数据导出方法、装置及系统 | |
CN110750295B (zh) | 一种信息处理方法,装置,电子设备和存储介质 | |
US20220188153A1 (en) | System and method of executing task of operating system for vehicle | |
CN109558222A (zh) | 批量业务进程监控方法、装置、计算机及可读存储介质 | |
CN115437757A (zh) | 调度方法、系统、服务器和计算机可读存储介质 | |
CN107180107B (zh) | Ionic框架下的手机附件上传选择文件的方法及系统 | |
CN112532750B (zh) | 一种大数据推送处理方法、系统及云平台 | |
CN114116181B (zh) | 一种分布式的数据分析任务调度系统及方法 | |
CN115617421B (zh) | 进程智能调度方法、装置、可读存储介质及嵌入式设备 | |
CN112035643B (zh) | 一种对话机器人能力复用的方法和装置 | |
CN109165200B (zh) | 数据同步方法、装置、计算设备及计算机存储介质 | |
CN108681466B (zh) | 一种基于格式化分组指令的cpu卡控制方法、电子设备及存储介质 | |
CN115168316A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190823 |
|
RJ01 | Rejection of invention patent application after publication |