CN112052077A - 软件任务管理的方法、装置、设备、介质 - Google Patents

软件任务管理的方法、装置、设备、介质 Download PDF

Info

Publication number
CN112052077A
CN112052077A CN201910491672.XA CN201910491672A CN112052077A CN 112052077 A CN112052077 A CN 112052077A CN 201910491672 A CN201910491672 A CN 201910491672A CN 112052077 A CN112052077 A CN 112052077A
Authority
CN
China
Prior art keywords
task
executed
tasks
execution
software
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
Application number
CN201910491672.XA
Other languages
English (en)
Inventor
钟盛军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201910491672.XA priority Critical patent/CN112052077A/zh
Publication of CN112052077A publication Critical patent/CN112052077A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

本发明提供了一种软件任务管理的方法、装置、设备、存储介质,方法包括:初始化步骤,为软件中的待执行的任务声明任务属性,任务属性包括待执行任务可接受的执行线程类型;任务排序步骤,根据任务属性确定待执行任务的调度顺序;调度步骤,根据调度顺序统一调度待执行任务的实际执行顺序、所在的执行线程类型和任务执行优先级;执行步骤,任务执行线程请求调度可执行任务并执行,其中在每次执行结束后重新发出调度请求,直至所有可执行任务执行完成。本发明在多线程执行任务中压缩可压缩任务并将所有必须任务安排到最优节点执行,实现提前主干任务或必要任务、分离延后非主干或非必要任务、尽量跑满可用算力。

Description

软件任务管理的方法、装置、设备、介质
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种软件任务管理的方法、装置、设备、存储介质。
背景技术
在当前的各种软件中,往往存在无用代码堆叠等现象,几千行代码会涉及很多业务,都需要初始化,在启动过程中,随着代码复杂度更高,容易逻辑冲突,造成启动缓慢;并且其中一个任务可能需要几个模块初始化,以前代码没有管控,没有启动顺序的管控,可维护性低,造成并发现象,每个软件启动多个线程。同时,由于需要处理的数据庞大,为了提高处理效率,会同时利用多个线程对数据的计算、传输等不同任务进行同时执行,这就会出现在同一个应用中,非主干或非必要的任务与主干任务或必要任务同时进行,消耗终端设备的算力。因此,现有技术中的软件多线程任务管理的方式不仅会造成启动缓慢、执行混乱等问题,还会造成很大的终端设备算力浪费。
发明内容
本发明欲解决的技术问题
对于软件的任务管理,针对上述现有技术中存在的问题,需要在多线程执行任务过程中压缩所有可压缩任务并将所有必须任务安排到最优节点执行,实现提前主干任务或必要任务、分离延后非主干或非必要任务、尽量跑满可用算力。
本发明正是为了解决上述课题而完成,其目的在于提供一种简单高效的,软件任务管理的方法、装置、设备、存储介质。
用于解决问题的技术方案
为了解决上述技术问题,本发明实施例提供一种软件任务管理的方法,采用了如下所述的技术方案:
所述方法包括,初始化步骤,为软件中的待执行任务声明任务属性,所述任务属性包括所述待执行任务可接受的执行线程类型;
任务排序步骤,根据所述任务属性确定所述待执行任务的调度顺序;
调度步骤,根据所述调度顺序统一调度所述待执行任务的实际执行顺序、所在的执行线程类型和任务执行优先级;
执行步骤,任务执行线程请求调度可执行任务并执行,其中在每次执行结束后重新发出调度请求,直至所有可执行任务执行完成。
进一步地,如前所述的软件任务管理的方法,所述任务属性还包括:任务类型、任务的依赖关系、任务权重。
进一步地,如前所述的软件任务管理的方法,所述任务类型包括:可执行任务、冻结任务、取消任务、已解决任务、拒绝执行任务;
所述执行线程类型包括:主线程、全局线程、普通线程。
进一步地,如前所述的软件任务管理的方法,还包括检测步骤,检测存在任务依赖关系的待执行任务之间的依赖时长和/或依赖错误。
进一步地,如前所述的软件任务管理的方法,检测所述依赖错误包括判定相关任务是否存在冲突和/或循环,如存在则报错,如不存在则进入下一步骤。
进一步地,如前所述的软件任务管理的方法,所述任务排序步骤中,通过拓扑排序,根据所述任务类型、任务权重进行排序,得到按调度顺序排序的待执行任务队列。
进一步地,如前所述的软件任务管理的方法,所述执行步骤还包括标记定位步骤,对异步执行的任务通过标记定位来报告执行状态,通过所述执行状态调整不同任务的所述任务类型。
进一步地,如前所述的软件任务管理的方法,所述执行步骤还包括判断步骤,判断统一调度的待执行任务是否符合执行条件,如果所述待执行任务的所述任务类型符合并且可执行,则执行所述待执行任务,如果所述待执行任务的所述任务类型不符合和/或不可执行,则跳过所述待执行任务,继续发送请求。
进一步地,如前所述的软件任务管理的方法,
所述待执行任务可执行包括所述任务类型为可执行任务并且没有依赖任务或依赖任务已执行完成,
所述待执行任务不可执行包括所述任务类型为冻结任务、取消任务、已解决任务、拒绝执行任务或者依赖任务未执行完成的至少一种情况。
进一步地,如前任一所述的软件任务管理的方法,还包括监控步骤,监控记录任务执行情况以反馈给所述调度步骤进行调整,
所述任务执行情况包括依赖关系、执行流程、执行时间。
本发明的另一方面提供了一种软件任务管理的装置,包括:
初始化模块,为软件中的待执行任务声明任务属性,所述任务属性包括所述待执行任务可接受的执行线程类型;
任务排序模块,根据所述任务属性对所述待执行任务的调度顺序进行排序;
调度模块,根据所述调度顺序统一调度所述待执行任务的实际执行顺序、所在的执行线程类型和任务执行优先级;
执行模块,任务执行线程请求调度可执行任务并执行,并在执行结束后重新发出调度请求,直至所有可执行任务执行完成。
进一步地,如前所述的软件任务管理的装置,还包括检测模块,检测存在任务依赖关系的待执行任务之间的依赖时长和/或依赖错误。
进一步地,如前所述的软件任务管理的装置,还包括标记定位模块,对异步执行的任务通过标记定位来报告执行状态,通过所述执行状态调整不同任务的所述任务类型。
进一步地,如前所述的软件任务管理的装置,还包括判断模块,判断统一调度的待执行任务是否符合执行条件,如果所述待执行任务的所述任务类型符合并且可执行,则执行所述待执行任务,如果所述待执行任务的所述任务类型不符合和/或不可执行,则跳过所述待执行任务,继续发送请求。
进一步地,如前任一所述的软件任务管理的装置,还包括监控模块,监控记录任务执行情况以反馈给所述调度模块进行调整,
所述任务执行情况包括依赖关系、执行流程、执行时间。
本发明的另一方面提供了一种终端设备,包括存储器和处理器,所述存储器中存储有应用程序,所述处理器执行所述应用程序时实现如前述任一项所述的软件任务管理的方法的步骤。
本发明的另一方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任一项所述的软件任务管理的方法的步骤。
发明效果
本发明的软件任务管理方法可以实现在多线程执行任务过程中压缩所有可压缩任务并将所有必须任务安排到最优节点执行,实现提前主干任务或必要任务,例如首帧布局提前解析;分离延后非主干或非必要任务,例如业务模块的初始化;尽量跑满可用算力。
附图说明
图1是本发明可以应用于其中的示例性系统架构图;
图2根据本发明的软件任务管理的方法的一个实施例的流程图;
图3根据本发明的软件任务管理的方法的一个实施例的示意图;
图4是根据本发明的终端设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明;本发明的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本发明的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本发明方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[系统结构]
首先,说明本发明的一个实施例的系统的结构。如图1所示,系统结构100可以包括终端设备101、102、103,网络104和服务器105。网络104是用以在终端设备101、102、103和服务器105之间提供通信链路的介质。其中,终端设备101为小屏显示器设备,终端设备102和/或103为大屏显示器设备。
在本实施例中,软件任务管理的方法运行于其上的电子设备(例如图1所示的终端设备101或102或103)可以通过网络104进行各种信息的传输。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultrawideband)连接、以及其他现在已知或将来开发的无线连接方式。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本发明实施例所提供的软件任务管理的方法一般由服务器与终端设备共同执行。在本实施例中,服务器用于与终端设备101、102、103进行信息传输,例如向终端设备101、102、103的提供各种数据以供终端设备进行处理等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[实施例装置]
为了实现本发明实施例中的技术方案,本发明提供了一种软件任务管理的装置,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中,图2所示的方法将在下面详细描述。
本实施例所述的软件任务管理的装置包括:初始化模块、任务排序模块、调度模块、检测模块、执行模块、标记定位模块、判断模块、监控模块。
初始化模块,用于执行初始化步骤S201,为软件中的待执行的任务声明任务属性,其中,任务属性包括所述待执行任务可接受的执行线程类型、任务类型、任务的依赖关系、任务权重等属性。
其中,任务是可执行任务中的最小单元,在软件执行的多线程任务管理全局中每个任务均是唯一的。这里,任务的类型包括:可执行任务、冻结任务、取消任务、已解决任务、拒绝执行任务,可执行任务是指可以被请求后进行执行的任务,冻结任务是指需要在执行过程中由外部触发唤醒的任务,取消任务是指在待执行任务队列中只要存在取消任务则不再执行整个队列的任务,已解决任务是指已被执行完毕的任务,拒绝执行任务是指本任务不需要被执行的任务。
其中,执行线程类型包括:主线程、全局线程、普通线程。其中,主线程是指软件任务管理过程中的主干线程,只有一个并且不允许其他任务阻塞;全局线程是指软件任务管理过程中的专用于处理CPU密集类任务的线程,全局只有一个;普通线程,用于执行上述任务以外的任务,全局可以有多个。
检测模块,用于执行检测步骤S202,检测存在任务依赖关系的待执行任务之间的依赖时长和/或依赖错误。这里,如果上下游的任务之间存在依赖时长,那么依赖时长的超时时间不应该设置过长,例如设置在30s之内,如果执行超时则将该任务的类型自动标识为拒绝执行任务。这里,依赖错误检测包括判定相关任务是否存在冲突和/或循环,如存在冲突和/或循环则由于无法全部执行完毕而报错,如不存在则进入下一步骤。
任务排序模块,用于执行任务排序步骤S203,根据所述任务属性包括可接受的执行线程类型、任务类型、任务的依赖关系、任务权重等属性对所述待执行任务的调度顺序进行排序。这里,通过拓扑排序,根据所述任务类型、任务权重进行排序,得到按调度顺序排序的待执行任务队列。这里,拓扑排序优选为有向无环图拓扑排序,并生成符合向性先后的线性数组。这里有向无环图拓扑排序可以包括宽松有向无环图和严格有向无环图,其中宽松有向无环图中下游任务只确保直接上游任务都执行完毕,但不确保上游的执行顺序;而严格有向无环图中下游任务确保直接上游任务都执行完毕,并且确保上游的任务有明确的执行顺序。本实施例中优选宽松有向无环图的拓扑排序。
调度模块,用于执行调度步骤S204,根据所述调度顺序统一调度所述待执行任务的实际执行顺序、所在的执行线程类型和任务执行优先级,将根据执行请求根据待执行任务的权重确定该任务的实际执行顺序和执行优先级,根据待执行任务可接受的执行线程类型将待执行任务调度至所在的执行线程类型中进行执行。
执行模块,用于执行执行步骤S205,所述任务执行线程请求调度可执行任务并执行,并在执行结束后重新发出调度请求,直至所有可执行任务执行完成。
判断模块,用于执行判断步骤S206,判断统一调度的待执行任务是否符合执行条件,如果所述待执行任务的所述任务类型符合并且可执行,则执行所述待执行任务,如果所述待执行任务类型不符合和/或不可执行,则跳过该任务,继续发送请求。
这里,所述任务可执行包括所述任务类型为可执行任务并且没有依赖任务或依赖任务已执行完成,
所述任务不可执行包括所述任务类型为冻结任务、取消任务、已解决任务、拒绝执行任务或者依赖任务未执行完成的至少一种情况。
标记定位模块,用于执行标记定位步骤S207,对异步执行的任务通过标记定位来报告各自执行状态,通过所述执行状态调整不同任务的所述任务类型。例如,将执行完成的任务标记为已解决任务,将执行超过依赖时长的任务标记为拒绝执行任务。
监控模块,用于执行监控步骤S208,监控记录任务执行情况以反馈给所述调度步骤进行调整,这里,所述任务执行情况包括依赖关系、执行流程、执行时间。
[实施例方法]
继续参考图2,示出了根据本发明的软件任务管理的方法的一个实施例的流程图。所述软件任务管理的方法,包括以下步骤:
初始化步骤S201,初始化模块为软件中的待执行的任务声明任务属性,其中,任务属性包括所述待执行任务可接受的执行线程类型、任务类型、任务的依赖关系、任务权重等属性。
其中,任务是可执行任务中的最小单元,在软件执行的多线程任务管理全局中每个任务均是唯一的。这里,任务的类型包括:可执行任务、冻结任务、取消任务、已解决任务、拒绝执行任务,可执行任务是指可以被请求后进行执行的任务,冻结任务是指需要在执行过程中由外部触发唤醒的任务,取消任务是指在待执行任务队列中只要存在取消任务则不再执行整个队列的任务,已解决任务是指已被执行完毕的任务,拒绝执行任务是指本任务不需要被执行的任务。
其中,执行线程类型包括:主线程、全局线程、普通线程。其中,主线程是指软件任务管理过程中的主干线程,只有一个并且不允许其他任务阻塞;全局线程是指软件任务管理过程中的专用于处理CPU密集类任务的线程,全局只有一个;普通线程,用于执行上述任务以外的任务,全局可以有多个。
检测步骤S202,检测模块检测存在任务依赖关系的待执行任务之间的依赖时长和/或依赖错误。这里,如果上下游的任务之间存在依赖时长,那么依赖时长的超时时间不应该设置过长,例如设置在30s之内,如果执行超时则将该任务的类型自动标识为拒绝执行任务。这里,依赖错误检测包括判定相关任务是否存在冲突和/或循环,如存在冲突和/或循环则由于无法全部执行完毕而报错,如不存在则进入下一步骤。
任务排序步骤S203,任务排序模块根据所述任务属性包括可接受的执行线程类型、任务类型、任务的依赖关系、任务权重等属性对所述待执行任务的调度顺序进行排序。这里,通过拓扑排序,根据所述任务类型、任务权重进行排序,得到按调度顺序排序的待执行任务队列。这里,拓扑排序优选为有向无环图拓扑排序,并生成符合向性先后的线性数组。这里有向无环图拓扑排序可以包括宽松有向无环图和严格有向无环图,其中宽松有向无环图中下游任务只确保直接上游任务都执行完毕,但不确保上游的执行顺序;而严格有向无环图中下游任务确保直接上游任务都执行完毕,并且确保上游的任务有明确的执行顺序。本实施例中优选宽松有向无环图的拓扑排序。
调度步骤S204,调度模块根据所述调度顺序统一调度所述待执行任务的实际执行顺序、所在的执行线程类型和任务执行优先级,将根据执行请求根据待执行任务的权重确定该任务的实际执行顺序和执行优先级,根据待执行任务可接受的执行线程类型将待执行任务调度至所在的执行线程类型中进行执行。
执行步骤S205,执行模块中的任务执行线程请求调度可执行任务并执行,并在执行结束后重新发出调度请求,直至所有可执行任务执行完成。
判断步骤S206,判断模块判断统一调度的待执行任务是否符合执行条件,如果所述待执行任务的所述任务类型符合并且可执行,则执行所述待执行任务,如果所述待执行任务类型不符合和/或不可执行,则跳过该任务,继续发送请求。
这里,所述任务可执行包括所述任务类型为可执行任务并且没有依赖任务或依赖任务已执行完成,
所述任务不可执行包括所述任务类型为冻结任务、取消任务、已解决任务、拒绝执行任务或者依赖任务未执行完成的至少一种情况。
执行标记定位步骤S207,标记定位模块对异步执行的任务通过标记定位来报告各自执行状态,通过所述执行状态调整不同任务的所述任务类型。例如,将执行完成的任务标记为已解决任务,将执行超过依赖时长的任务标记为拒绝执行任务。
监控步骤S208,监控模块监控记录任务执行情况以反馈给所述调度步骤进行调整,这里,所述任务执行情况包括依赖关系、执行流程、执行时间。
[实施例]
下面,参照图3一个实施例的示意图对本发明的软件任务管理的方法进行详细描述。
如图3所示,步骤1,初始化模块为软件中的待执行的各个任务声明任务属性,其中,任务属性包括所述待执行任务可接受的执行线程类型、任务类型、任务的依赖关系、任务权重等属性。例如在本实施例中定义10个任务,其中任务5的类型是一个冻结任务类型的任务,需外部触发唤醒才可执行,并且任务5依赖于任务7和任务8,其中任务7依赖时长设置为5s,任务8的依赖时长设置为30s,并且任务8依赖于任务2。
步骤2,检测模块检测任务1-10之间的存在的任务依赖关系之间的依赖时长和/或依赖错误。这里,任务7的依赖时长为5s,任务8的依赖时长为30s,如果执行时超过该设置的依赖时长依然未执行成功则将该任务的类型自动标识为拒绝执行任务。另外,还需要检测任务1-10之间的依赖错误检测包括判定相关任务是否存在冲突和/或循环,如存在冲突和/或循环则由于无法全部执行完毕而报错,如不存在则进入下一步骤。
步骤3,任务排序模块根据任务1-10之间的任务属性包括可接受的执行线程类型、任务类型、任务的依赖关系、任务权重等属性对所述待执行任务的调度顺序进行排序。这里,通过拓扑排序,根据所述任务类型、任务权重进行排序,得到按调度顺序排序的待执行任务队列。这里,拓扑排序优选为有向无环图拓扑排序,并生成符合向性先后的线性数组。这里有向无环图拓扑排序可以包括宽松有向无环图和严格有向无环图,其中宽松有向无环图中下游任务只确保直接上游任务都执行完毕,但不确保上游的执行顺序;而严格有向无环图中下游任务确保直接上游任务都执行完毕,并且确保上游的任务有明确的执行顺序。本实施例中优选宽松有向无环图的拓扑排序。例如,拓扑排序后得到序列0,1,2,6,9//7,8//5//3,4//10(序列不唯一,//表示任务队列的执行依赖关系)。
步骤4,调度模块根据所述调度顺序统一调度所述待执行任务的实际执行顺序、所在的执行线程类型和任务执行优先级,将根据执行请求根据待执行任务的权重确定该任务的实际执行顺序和执行优先级,根据待执行任务可接受的执行线程类型将待执行任务调度至所在的执行线程类型中进行执行。这里,关于权重属性,例如任务10与任何其他任务都无关,则其即可以是第一个执行也可以是最后一个执行,如果希望其尽早执行,调度模块就加大其权重,让其在同等级中最早执行。另外如果一些接受线程类型为主线程的依赖任务,比如任务8在主线程执行,假设任务8依赖于任务2,则调度模块自动给任务8的所有依赖任务提高权重,那么上述调度顺序的序列就形成新的实际执行顺序10//2,0,1,6,9//7,8//5//3,4,以此类推。调度模块在获得执行模块发送的请求后,按照实际执行顺序将待执行任务发送至执行模块。
步骤5,执行模块中的任务执行线程请求调度可执行任务并执行,并在执行结束后重新发出调度请求,直至所有可执行任务执行完成。
步骤6,判断模块判断统一调度的待执行任务是否符合执行条件,如果所述待执行任务的所述任务类型符合并且可执行,则执行所述待执行任务,执行模块开始执行任务10,然后执行其依赖下游权重最高的任务2,0,1,6,9;然后任务7,8也接着执行;任务5是冻结任务类型,不执行;任务3,4依赖5,也不执行。
步骤7,标记定位模块对异步执行的任务通过标记定位来报告各自执行状态,通过所述执行状态调整不同任务的所述任务类型。
对上述执行完成的任务进行标记,将各个任务的类型标记为已解决任务。当外部触发唤醒任务5后(即任务5解除冻结任务类型),检测其依赖任务7,8是否执行成功并标记为已解决任务,如果未成功,则执行模块依据需求执行后续或者等待。如果任务7,8已经执行成功,并且任务5已解除冻结任务类型,则执行任务5并标识其为已解决任务类型。执行模块触发重新遍历,检测到任务5的下游任务3,4并执行和标记。
步骤8,监控模块监控记录任务执行情况以反馈给所述调度步骤进行调整,这里,所述任务执行情况包括依赖关系、执行流程、执行时间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
为解决上述技术问题,本发明实施例还提供终端设备。具体请参阅图4,图4为本实施例终端设备基本结构框图。
所述终端设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件41-43的终端设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的终端设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecificIntegrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述终端设备可以是手机、平板电脑、桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可以与用户通过触摸屏、键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述终端设备4的内部存储单元,例如该终端设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述终端设备4的外部存储设备,例如该终端设备4上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器41还可以既包括所述终端设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述终端设备4的操作系统和各类应用软件,例如软件任务管理的方法的程序代码等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central ProcessingUnit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述终端设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的程序代码或者处理数据,例如运行所述软件任务管理的方法的程序代码。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述终端设备4与其他电子设备之间建立通信连接。
本发明还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有软件任务管理的程序,所述软件任务管理的程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的软件任务管理的方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,附图中给出了本发明的较佳实施例,但并不限制本发明的专利范围。本发明可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本发明说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明专利保护范围之内。

Claims (17)

1.一种软件任务管理的方法,其特征在于,包括:
初始化步骤,为软件中的待执行任务声明任务属性,所述任务属性包括所述待执行任务可接受的执行线程类型;
任务排序步骤,根据所述任务属性确定所述待执行任务的调度顺序;
调度步骤,根据所述调度顺序统一调度所述待执行任务的实际执行顺序、所在的执行线程类型和任务执行优先级;
执行步骤,任务执行线程请求调度可执行任务并执行,其中在每次执行结束后重新发出调度请求,直至所有可执行任务执行完成。
2.如权利要求1所述的软件任务管理的方法,其特征在于,所述任务属性还包括:任务类型、任务的依赖关系、任务权重。
3.如权利要求2所述的软件任务管理的方法,其特征在于,所述任务类型包括:可执行任务、冻结任务、取消任务、已解决任务、拒绝执行任务;
所述执行线程类型包括:主线程、全局线程、普通线程。
4.如权利要求2所述的软件任务管理的方法,其特征在于,还包括检测步骤,检测存在任务依赖关系的待执行任务之间的依赖时长和/或依赖错误。
5.如权利要求4所述的软件任务管理的方法,其特征在于,检测所述依赖错误包括判定相关任务是否存在冲突和/或循环,如存在则报错,如不存在则进入下一步骤。
6.如权利要求2所述的软件任务管理的方法,其特征在于,所述任务排序步骤中,通过拓扑排序,根据所述任务类型、任务权重进行排序,得到按调度顺序排序的待执行任务队列。
7.如权利要求2所述的软件任务管理的方法,其特征在于,所述执行步骤还包括标记定位步骤,对异步执行的任务通过标记定位来报告执行状态,通过所述执行状态调整不同任务的所述任务类型。
8.如权利要求2所述的软件任务管理的方法,其特征在于,所述执行步骤还包括判断步骤,判断统一调度的待执行任务是否符合执行条件,如果所述待执行任务的所述任务类型符合并且可执行,则执行所述待执行任务,如果所述待执行任务的所述任务类型不符合和/或不可执行,则跳过所述待执行任务,继续发送请求。
9.如权利要求8所述的软件任务管理的方法,其特征在于,
所述待执行任务可执行包括所述任务类型为可执行任务并且没有依赖任务或依赖任务已执行完成,
所述待执行任务不可执行包括所述任务类型为冻结任务、取消任务、已解决任务、拒绝执行任务或者依赖任务未执行完成的至少一种情况。
10.如权利要求1-9中任一项所述的软件任务管理的方法,其特征在于,还包括监控步骤,监控记录任务执行情况以反馈给所述调度步骤进行调整,
所述任务执行情况包括依赖关系、执行流程、执行时间。
11.一种软件任务管理的装置,其特征在于,包括:
初始化模块,为软件中的待执行任务声明任务属性,所述任务属性包括所述待执行任务可接受的执行线程类型;
任务排序模块,根据所述任务属性对所述待执行任务的调度顺序进行排序;
调度模块,根据所述调度顺序统一调度所述待执行任务的实际执行顺序、所在的执行线程类型和任务执行优先级;
执行模块,任务执行线程请求调度可执行任务并执行,并在执行结束后重新发出调度请求,直至所有可执行任务执行完成。
12.根据权利要求11所述的软件任务管理的装置,其特征在于,还包括检测模块,检测存在任务依赖关系的待执行任务之间的依赖时长和/或依赖错误。
13.根据权利要求12所述的软件任务管理的装置,其特征在于,还包括标记定位模块,对异步执行的任务通过标记定位来报告执行状态,通过所述执行状态调整不同任务的所述任务类型。
14.根据权利要求13所述的软件任务管理的装置,其特征在于,还包括判断模块,判断统一调度的待执行任务是否符合执行条件,如果所述待执行任务的所述任务类型符合并且可执行,则执行所述待执行任务,如果所述待执行任务的所述任务类型不符合和/或不可执行,则跳过所述待执行任务,继续发送请求。
15.根据权利要求11-14中任一项所述的软件任务管理的装置,其特征在于,还包括监控模块,监控记录任务执行情况以反馈给所述调度模块进行调整,
所述任务执行情况包括依赖关系、执行流程、执行时间。
16.一种终端设备,包括存储器和处理器,所述存储器中存储有应用程序,所述处理器执行所述应用程序时实现如权利要求1至10中任一项所述的软件任务管理的方法的步骤。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10中任一项所述的软件任务管理的方法的步骤。
CN201910491672.XA 2019-06-06 2019-06-06 软件任务管理的方法、装置、设备、介质 Pending CN112052077A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910491672.XA CN112052077A (zh) 2019-06-06 2019-06-06 软件任务管理的方法、装置、设备、介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910491672.XA CN112052077A (zh) 2019-06-06 2019-06-06 软件任务管理的方法、装置、设备、介质

Publications (1)

Publication Number Publication Date
CN112052077A true CN112052077A (zh) 2020-12-08

Family

ID=73609291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910491672.XA Pending CN112052077A (zh) 2019-06-06 2019-06-06 软件任务管理的方法、装置、设备、介质

Country Status (1)

Country Link
CN (1) CN112052077A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112764907A (zh) * 2021-01-26 2021-05-07 网易(杭州)网络有限公司 一种任务处理方法、装置、电子设备和存储介质
CN113407329A (zh) * 2021-07-15 2021-09-17 北京百度网讯科技有限公司 任务执行方法、装置、设备以及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055484A1 (en) * 2009-09-03 2011-03-03 International Business Machines Corporation Detecting Task Complete Dependencies Using Underlying Speculative Multi-Threading Hardware
CN102023844A (zh) * 2009-09-18 2011-04-20 深圳中微电科技有限公司 并行处理器及其线程处理方法
CN108509260A (zh) * 2018-01-31 2018-09-07 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质
CN108549574A (zh) * 2018-03-12 2018-09-18 深圳市万普拉斯科技有限公司 线程调度管理方法、装置、计算机设备和存储介质
CN109523187A (zh) * 2018-11-27 2019-03-26 北京字节跳动网络技术有限公司 任务调度方法、装置和设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055484A1 (en) * 2009-09-03 2011-03-03 International Business Machines Corporation Detecting Task Complete Dependencies Using Underlying Speculative Multi-Threading Hardware
CN102023844A (zh) * 2009-09-18 2011-04-20 深圳中微电科技有限公司 并行处理器及其线程处理方法
CN108509260A (zh) * 2018-01-31 2018-09-07 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质
CN108549574A (zh) * 2018-03-12 2018-09-18 深圳市万普拉斯科技有限公司 线程调度管理方法、装置、计算机设备和存储介质
CN109523187A (zh) * 2018-11-27 2019-03-26 北京字节跳动网络技术有限公司 任务调度方法、装置和设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112764907A (zh) * 2021-01-26 2021-05-07 网易(杭州)网络有限公司 一种任务处理方法、装置、电子设备和存储介质
CN113407329A (zh) * 2021-07-15 2021-09-17 北京百度网讯科技有限公司 任务执行方法、装置、设备以及存储介质
CN113407329B (zh) * 2021-07-15 2024-01-30 北京百度网讯科技有限公司 任务执行方法、装置、设备以及存储介质

Similar Documents

Publication Publication Date Title
CN105190555B (zh) 集中式任务调度
CN109408205B (zh) 基于hadoop集群的任务调度方法和装置
US8595743B2 (en) Network aware process scheduling
US8424007B1 (en) Prioritizing tasks from virtual machines
US9430283B2 (en) Information processing apparatus and job scheduling method
US8056083B2 (en) Dividing a computer job into micro-jobs for execution
CN111950988B (zh) 分布式工作流调度方法、装置、存储介质及电子设备
TW200813818A (en) Method, system, and apparatus for scheduling computer micro-jobs to execute at non-disruptive times
CN105589783A (zh) 应用程序卡顿问题数据获取方法及装置
CN105159776A (zh) 进程处理方法及装置
CN111338791A (zh) 集群队列资源的调度方法、装置、设备及存储介质
CN103873587B (zh) 一种基于云平台实现调度的方法及装置
CN111813573A (zh) 管理平台与机器人软件的通信方法及其相关设备
CN110620681A (zh) 网络连接超时时间设置方法、装置、设备及介质
CN112052077A (zh) 软件任务管理的方法、装置、设备、介质
CN106126335A (zh) 终端设备的媒体扫描方法及终端设备
Toma et al. Computation offloading for real-time systems
CN110008187B (zh) 文件传输调度方法、装置、设备及计算机可读存储介质
CN113242301B (zh) 真实服务器的选定方法、装置、计算机设备及存储介质
CN113076224B (zh) 数据备份方法、数据备份系统、电子设备及可读存储介质
CN111475388A (zh) 数据推送的测试方法、装置、计算机设备及存储介质
CN115981871A (zh) 一种gpu资源调度方法、装置、设备及存储介质
CN104781788A (zh) 资源管理系统、资源管理方法和程序
CN113254106B (zh) 基于Flink的任务执行方法、装置、计算机设备及存储介质
CN110825342A (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
CB02 Change of applicant information

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: Tiktok vision (Beijing) Co.,Ltd.

CB02 Change of applicant information