CN109491780B - 多任务调度方法及装置 - Google Patents
多任务调度方法及装置 Download PDFInfo
- Publication number
- CN109491780B CN109491780B CN201811406657.2A CN201811406657A CN109491780B CN 109491780 B CN109491780 B CN 109491780B CN 201811406657 A CN201811406657 A CN 201811406657A CN 109491780 B CN109491780 B CN 109491780B
- Authority
- CN
- China
- Prior art keywords
- task
- fiber
- thread
- message
- queue
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 239000000835 fiber Substances 0.000 claims abstract description 182
- 238000012545 processing Methods 0.000 claims abstract description 33
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000012544 monitoring process Methods 0.000 claims abstract description 26
- 239000000872 buffer Substances 0.000 claims description 13
- 230000005059 dormancy Effects 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 9
- 230000007958 sleep Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000006837 decompression Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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
- 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)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种多任务调度方法及装置,应用于单线程下包括多个纤程的架构中,该方法包括:利用所述线程对任务队列中的各纤程任务进行监测以确定是否到达各所述纤程任务对应的执行时间;若到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务;利用所述线程监测是否有待处理消息,若存在待处理消息,则暂停当前的对纤程任务的执行过程,并对所述待处理消息进行处理;将对所述待处理消息的处理结果进行输出。在上述方法中,通过将控制逻辑集中在线程,实现多纤程任务执行机制,相比现有技术中的多线程而言,很大程度上减少了线程切换的代价,且提供了消息处理模式,具有良好的扩充能力。
Description
技术领域
本发明涉及多任务处理技术领域,具体而言,涉及一种多任务调度方法及装置。
背景技术
线程,也被称为轻量级进程,是进程中的一个实体。线程自己不拥有***资源,但它可以与同属于一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。线程间可以互相切换,但线程间切换的时间开销非常大。因此,当线程的数量较大时,线程切换带来的时间开销将很大,将影响到***的性能。
开发者在开发初期无法完全预料到对产品的需求,一般PC端由于不需考虑能耗及供电的问题,所以一般按最大性能模式来做,所以虽然线程开销大,但是基本不会影响到PC端***性能。但是,在移动端需要照顾能耗的问题,和PC端线程调度是不一样的,一个进程其能够使用的线程和CPU是受限的,并且还受***目前的供电和发热情况的限制。由于移动端的限制非常多,因此线程不是能够实时运行的,如果开的线程过多,且线程之间的切换频繁的话,移动端的性能表现将会很差。特别是对于播放器这类对实时性要求很高的设备,目前采用的多线程模型将严重影响到用户的使用体验。
发明内容
有鉴于此,本申请的目的在于,提供一种多任务调度方法及装置以改善上述问题。
第一方面,本申请实施例提供一种多任务调度方法,应用于移动设备,适用于单线程下包括多个纤程的架构中,所述方法包括:
利用所述线程对任务队列中的各纤程任务进行监测以确定是否到达各所述纤程任务对应的执行时间;
若到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务;
利用所述线程监测是否有待处理消息,若存在待处理消息,则暂停当前的对纤程任务的执行过程,并对所述待处理消息进行处理;
将对所述待处理消息的处理结果进行输出。
可选地,在本申请中,各所述纤程任务拥有对应的寄存器状态,所述若到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务的步骤,包括:
若到达所述任务队列中的任意一个所述纤程任务的执行时间,则将所述纤程任务对应的当前的纤程任务入口的寄存器状态存入任务的控制数据结构中;
判断是否存在上次中断后所保存的数据;
若存在上次中断后所保存的数据,则加载所述保存的数据,并从上次中断的中断点恢复执行所述纤程任务;
若不存在上次中断后所保存的数据,则从纤程任务入口开始执行所述纤程任务。
可选地,在本申请中,各所述纤程任务拥有对应的栈缓冲区,所述暂停当前的对纤程任务的执行过程的步骤之后,所述方法还包括:
将所述纤程任务在暂停时的中断点所对应的自身寄存器状态保存至任务的控制数据结构中;
将所述纤程任务对应的栈缓冲区中的数据存入所述任务的控制数据结构中;
将所述纤程任务重新加入所述任务队列中以进行纤程任务排序。
可选地,在本申请中,所述利用所述线程监测是否有待处理消息的步骤,包括:
利用所述线程对消息队列进行巡查,以监测是否有用户传入的待处理消息。
可选地,在本申请中,在未到达所述任务队列中任意一个纤程任务对应的执行时间时,所述方法还包括:
进行休眠状态,执行预设时长的休眠。
第二方面,本申请实施例提供一种多任务调度装置,应用于移动设备,适用于单线程下包括多个纤程的架构中,所述装置包括:
第一监测模块,用于利用所述线程对任务队列中的各纤程任务进行监测以确定是否到达各所述纤程任务对应的执行时间;
执行模块,用于在到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务;
第二监测模块,用于利用所述线程监测是否有待处理消息;
处理模块,用于在存在待处理消息时,则暂停当前的对纤程任务的执行过程,并对所述待处理消息进行处理;
输出模块,用于将对所述待处理消息的处理结果进行输出。
可选地,在本申请中,各所述纤程任务拥有对应的寄存器状态,所述执行模块包括:
保存单元,用于在到达所述任务队列中的任意一个所述纤程任务的执行时间,则将所述纤程任务对应的当前的纤程任务入口的寄存器状态存入任务的控制数据结构中;
判断单元,用于判断是否存在上次中断后所保存的数据;
第一执行单元,用于在存在上次中断后所保存的数据时,加载所述保存的数据,并从上次中断的中断点恢复执行所述纤程任务;
第二执行单元,用于在不存在上次中断后所保存的数据时,从纤程任务入口开始执行所述纤程任务。
可选地,在本申请中,各所述纤程任务拥有对应的栈缓冲区,所述多任务调度装置还包括:
第一保存模块,用于将所述纤程任务在暂停时的中断点所对应的自身寄存器状态保存至任务的控制数据结构中;
第二保存模块,用于将所述纤程任务对应的栈缓冲区中的数据存入所述任务的控制数据结构中;
排序模块,用于将所述纤程任务重新加入所述任务队列中以进行纤程任务排序。
可选地,在本申请中,所述第二监测模块用于利用所述线程对消息队列进行巡查,以监测是否有用户传入的待处理消息。
可选地,在本申请中,所述多任务调度装置还包括:
休眠模块,用于在未到达所述人物队列中任意一个纤程对应的执行时间时,进行休眠状态,执行预设时长的休眠。
第三方面,本申请还提供一种移动设备,所述移动设备包括处理器及存储有若干计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述移动设备执行第一方面所述的多任务调度方法。
第四方面,本申请还提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在移动设备执行第一方面所述的多任务调度方法。
相对于现有技术而言,本申请具有以下有益效果:
本申请提供的多任务调度方法及装置,在所述方法中,在单线程下包括多个纤程的架构中,利用所述线程对任务队列中的各纤程任务进行监测,在到达其中任意一个纤程任务对应的执行时间时,则执行对应的纤程任务。并且线程还可实时监测是否有待处理消息,若存在待处理消息,则暂停当前的对纤程任务的执行过程,并对待处理消息进行处理,并将待处理消息的处理结果进行输出。在上述方法中,通过将控制逻辑集中在线程,实现多纤程任务执行机制,相比现有技术中的多线程而言,很大程度上减少了线程切换的代价,且提供了消息处理模式,具有良好的扩充能力。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的移动设备的结构框图。
图2为本申请实施例提供的多任务调度方法的流程图。
图3为图2中步骤S120的子步骤的流程图。
图4为本申请实施例提供的多任务调度机制的示意图。
图5为本申请实施例提供的多任务调度方法的另一流程图。
图6为本申请实施例提供的多任务调度装置的功能模块框图。
图7为本申请实施例提供的执行模块的功能模块框图。
图8为本申请实施例提供的多任务调度装置的另一功能模块框图。
图标:100-移动设备;110-多任务调度装置;111-第一监测模块;112-执行模块;1121-保存单元;1122-判断单元;1123-第一执行单元;1124-第二执行单元;113-第二监测模块;114-处理模块;115-输出模块;116-休眠模块;117-第一保存模块;118-第二保存模块;119-排序模块;120-存储器;130-处理器;140-通信单元。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
如图1所示,本申请实施例提供一种移动设备100,所述移动设备100包括多任务调度装置110、存储器120、处理器130以及通信单元140。
所述存储器120、处理器130以及通信单元140各元件相互之间直接或间接地电性连接,以实现信息的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器120用于存储程序,所述处理器130在接收到执行指令后,执行所述程序。所述通信单元140用于通过网络建立所述移动设备100与其它设备(比如用户终端)之间的通信连接,并用于通过网络进行数据的接收和发送。
多任务调度装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器120中或固化在所述移动设备100的操作***(Operating System,OS)中的软件功能模块。所述处理器130用于执行所述存储器120中存储的可执行模块,例如多任务调度装置110所包括的软件功能模块及计算机程序等,从而执行各种功能应用以及数据处理,即实现本发明实施例中的多任务调度方法。
其中,所述存储器120可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。
所述处理器130可能是一种集成电路芯片,具有信号的处理能力。上述的处理器130可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器130也可以是任何常规处理器等。
可以理解,图1所示的结构仅为示意,所述移动设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
可选地,所述移动设备100的具体类型不受限制,例如,可以是,但不限于,智能手机、平板电脑、个人数字助理(personal digital assistant,PDA)、移动上网设备(mobileInternet device,MID)等具有处理功能的移动设备100。
结合图2,本发明实施例还提供一种可应用于上述移动设备100的多任务调度方法。在本申请中,所述方法应用在单线程下包括多个纤程的架构中,下面将对所述方法包括的各个步骤进行详尽的阐述。
步骤S110,利用所述线程对任务队列中的各纤程任务进行监测以确定是否到达各所述纤程任务对应的执行时间。
步骤S120,若到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务。
步骤S130,若未到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则进行休眠状态,执行预设时长的休眠。
请参阅图3,在本申请实施例中,步骤S120可以包括以下子步骤:
子步骤S121,若到达所述任务队列中的任意一个所述纤程任务的执行时间,则将所述纤程任务对应的当前的纤程任务入口的寄存器状态存入任务的控制数据结构中。
子步骤S122,判断是否存在上次中断后所保存的数据。
子步骤S123,若存在上次中断后所保存的数据,则加载所述保存的数据,并从上次中断的中断点恢复执行所述纤程任务。
子步骤S124,若不存在上次中断后所保存的数据,则从纤程任务入口开始执行所述纤程任务。
SQL Server(关系型数据库管理***)使用操作***的线程来执行并发任务,在不使用纤程的情况下,SQL Server将启动线程,并由操作***将线程分配给CPU,线程管理由操作***内核控制。当一个线程完成退出CPU,其他线程调度占用该CPU时,将发生一个上下文切换,这个切换是在应用程序的用户模式和线程管理的内核模式之间的切换,所以需要付出一定的代价。
由于移动设备100的操作***不是一个实时***,资源是竞争使用的。其中,对于软解压播放器,其解码和渲染部分都需要使用大量的CPU资源。考虑到能耗问题,软解压播放器所能分配到的CPU资源是受限的。如果当前活跃线程数量超过***分配额度,将导致一部分线程不能运行,导致播放功能不能实时完成。且多线程的频繁切换将带来比较严重的性能损失。多线程模型需要较多的缓冲区,由于数据供求关系的变化,经常产生不必要的延时。故而多线程模型播放的实时性和流畅性较比较差。
为了减少上下文切换,本申请应用了纤程的概念,可以在SQL Server中启动纤程,纤程是线程的子模块,纤程由运行在用户模式下的代码管理,所以切换纤程比切换线程的代价要小。
本实施例中,实现了一种在单线程环境下,采用时间片轮排的多任务机制。其中,每一个纤程任务根据需要执行的时间来进行排序依次执行。可选地,每一个纤程任务按照需要被执行的时间存入任务队列中,线程持续性地对任务队列中的各纤程任务进行监控,以检测是否到达其中任意一个纤程任务对应的被执行时间。
若监测到到达了所述任务队列中的任意一个纤程任务对应的执行时间,则执行该纤程任务。本实施例中,各个纤程任务拥有对应的寄存器状态,其中,具体地,在到达所述任务队列中的任意一个纤程任务对应的执行时间时,首先将到达执行时间的纤程任务对应的当前的纤程任务入口的寄存器状态存入任务的控制数据结构中。
检查任务的控制数据结构中是否存在上次中断后所保存的数据,若存在上次中断后保存的数据,则加载所述保存的数据,并从上次中断的中断点开始恢复执行所述纤程任务。
而若不存在上次中断后所保存的数据,则从纤程任务入口开始执行所述纤程任务。
步骤S140,利用所述线程监测是否有待处理消息,若存在待处理消息,则暂停当前的对纤程任务的执行过程,并对所述待处理消息进行处理。
步骤S150,将对所述待处理消息的处理结果进行输出。
本申请实施例还可实现一种异步消息处理机制,在处理多任务轮排的同时,还可分时处理用户传入的消息。本实施例中,包括一消息队列,用户传入的消息可存入消息队列中。利用线程对消息队列进行巡查,以监测是否有用户传入的待处理消息。若存在待处理消息,则对待处理消息进行处理。
其中,若当前在执行纤程任务,则暂停当前的对纤程任务的执行过程,并对待处理消息进行处理。若当前未执行纤程任务,则可直接对待处理消息进行处理。在对待处理消息处理完成之后,则将待处理消息的处理结果进行输出,以告知用户。
请结合参阅图4,如图4中所示,本申请实施例提供的架构中包括任务队列及消息队列,任务队列中各纤程任务按照需要被执行的时间进行排列,例如依次为纤程任务0、纤程任务1、纤程任务2等等。而消息队列中包含用户所传入的待处理消息,例如可包括消息0、消息1、消息2等等。
线程可持续性地对任务队列和消息队列进行监控,以检查是否需要执行纤程任务以及是否存在待处理消息。线程若监测到到达任务队列中的任意一个纤程任务对应的执行时间时,则执行对应的纤程任务。而若未到达任务队列中的任意一个纤程任务对应的执行时间,则进行休眠状态,执行预设时长的休眠,例如该预设时长可为1毫秒,或者是0.5毫秒等不限。
此外,同时线程可对消息队列进行巡查,以监测是否有用户传入的待处理消息。若存在待处理消息,则对待处理消息进行处理并输出结果。若当前正在执行纤程任务时,则暂停对当前的纤程任务的执行过程。此外,若当前处于休眠状态但检测到有用户传入的待处理消息时,可立即对待处理消息进行处理。若不存在待处理消息,则继续监测是否到达某个纤程任务对应的执行时间。
本申请实施例中,每一个纤程任务拥有各自的栈缓冲区,若需要对某个纤程任务暂停时,所述方法还包括以下步骤,请结合参阅图5:
步骤S210,将所述纤程任务在暂停时的中断点所对应的自身寄存器状态保存至任务的控制数据结构中。
步骤S220,将所述纤程任务对应的栈缓冲区中的数据存入所述任务的控制数据结构中。
步骤S230,将所述纤程任务重新加入所述任务队列中以进行纤程任务排序。
本实施例中,在某个纤程任务被暂停时,则将纤程任务在暂停时的中断点所对应的自身寄存器状态保存至任务的控制数据结构中。且将纤程任务对应的栈缓冲区中的数据存入所述任务的控制数据结构中。
则由上述可知,任务的控制数据结构主要有三类数据成员,即任务入口的寄存器状态、中断点保存的寄存器状态以及当前纤程任务的栈缓冲区数据。
在纤程任务暂停执行时,则将纤程任务重新加入至任务队列中以进行纤程任务排序。
在本实施例中,将控制逻辑集中在一个线程内运行,并且该线程运行与移动设备100的解码、渲染模块等时间上分时运行,如此对解码和渲染模块不存在干扰和资源竞争,实时性更好。并且,应用了纤程的概念,将现有技术中的多线程的播放模型转换为单线程下多纤程的播放模型,实现了在用户模式下的多任务执行机制,多个任务可以分时并行执行,最大程度上减少了线程切换的代价。并且,在线程内提供了消息处理模式,具有良好的扩充能力。
本申请实施例还提供一种多任务调度装置110,与上面实施例不同的是,本多任务调度装置110是从虚拟装置的角度描述本申请方案的。请参照图6,多任务调度装置110可以包括以下模块。
第一监测模块111,用于利用所述线程对任务队列中的各纤程任务进行监测以确定是否到达各所述纤程任务对应的执行时间。
执行模块112,用于在到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务。
第二监测模块113,用于利用所述线程监测是否有待处理消息。
其中,具体地,所述第二监测模块113用于利用所述线程对消息队列进行巡查,以监测是否有用户传入的待处理消息。
处理模块114,用于在存在待处理消息时,则暂停当前的对纤程任务的执行过程,并对所述待处理消息进行处理。
输出模块115,用于将对所述待处理消息的处理结果进行输出。
此外,在本实施例中,所述多任务调度装置110还包括休眠模块116,所述休眠模块116用于在未到达所述任务队列中任意一个纤程对应的执行时间时,进行休眠状态,执行预设时长的休眠。
在本实施例中,各所述纤程拥有对应的寄存器状态,请参阅图7,所述执行模块112包括以下单元:
保存单元1121,用于在到达所述任务队列中的任意一个所述纤程任务的执行时间,则将所述纤程任务对应的当前的纤程任务入口的寄存器状态存入任务的控制数据结构中。
判断单元1122,用于判断是否存在上次中断后所保存的数据。
第一执行单元1123,用于在存在上次中断后所保存的数据时,加载所述保存的数据,并从上次中断的中断点恢复执行所述纤程任务。
第二执行单元1124,用于在不存在上次中断后所保存的数据时,从纤程任务入口开始执行所述纤程任务。
请参阅图8,在本实施例中,所述多任务调度装置110还包括以下模块:
第一保存模块117,用于将所述纤程任务在暂停时的中断点所对应的自身寄存器状态保存至任务的控制数据结构中。
第二保存模块118,用于将所述纤程任务对应的栈缓冲区中的数据存入所述任务的控制数据结构中。
排序模块119,用于将所述纤程任务重新加入所述任务队列中以进行纤程任务排序。
如果上述功能以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得移动设备100执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本申请提供的多任务调度方法及装置,在所述方法中,在单线程下包括多个纤程的架构中,利用所述线程对任务队列中的各纤程任务进行监测,在到达其中任意一个纤程任务对应的执行时间时,则执行对应的纤程任务。并且线程还可实时监测是否有待处理消息,若存在待处理消息,则暂停当前的对纤程任务的执行过程,并对待处理消息进行处理,并将待处理消息的处理结果进行输出。在上述方法中,通过将控制逻辑集中在线程,实现多纤程任务执行机制,相比现有技术中的多线程而言,很大程度上减少了线程切换的代价,且提供了消息处理模式,具有良好的扩充能力。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (10)
1.一种多任务调度方法,其特征在于,应用于移动设备,适用于单线程下包括多个纤程的架构中,所述方法包括:
利用所述线程对任务队列中的各纤程任务进行监测以确定是否到达各所述纤程任务对应的执行时间;
若到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务;
利用所述线程监测是否有待处理消息,若存在待处理消息,则暂停当前的对纤程任务的执行过程,并对所述待处理消息进行处理;
将对所述待处理消息的处理结果进行输出;
其中,若到达所述任务队列中的任意一个所述纤程任务的执行时间,则将所述纤程任务对应的当前的纤程任务入口的寄存器状态存入任务的控制数据结构中;
每一个纤程任务根据需要执行的时间来进行排序依次执行;每一个纤程任务按照需要被执行的时间存入任务队列中,线程持续性地对任务队列中的各纤程任务进行监控,以检测是否到达其中任意一个纤程任务对应的被执行时间。
2.根据权利要求1所述的多任务调度方法,其特征在于,各所述纤程任务拥有对应的寄存器状态,所述若到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务的步骤,包括:
判断是否存在上次中断后所保存的数据;
若存在上次中断后所保存的数据,则加载所述保存的数据,并从上次中断的中断点恢复执行所述纤程任务;
若不存在上次中断后所保存的数据,则从纤程任务入口开始执行所述纤程任务。
3.根据权利要求1所述的多任务调度方法,其特征在于,各所述纤程任务拥有各自的栈缓冲区,所述暂停当前的对纤程任务的执行过程的步骤之后,所述方法还包括:
将所述纤程任务在暂停时的中断点所对应的自身寄存器状态保存至任务的控制数据结构中;
将所述纤程任务对应的栈缓冲区中的数据存入所述任务的控制数据结构中;
将所述纤程任务重新加入所述任务队列中以进行纤程任务排序。
4.根据权利要求1所述的多任务调度方法,其特征在于,所述利用所述线程监测是否有待处理消息的步骤,包括:
利用所述线程对消息队列进行巡查,以监测是否有用户传入的待处理消息。
5.根据权利要求1-4任意一项所述的多任务调度方法,其特征在于,在未到达所述任务队列中任意一个纤程任务对应的执行时间时,所述方法还包括:
进行休眠状态,执行预设时长的休眠。
6.一种多任务调度装置,其特征在于,应用于移动设备,适用于单线程下包括多个纤程的架构中,所述装置包括:
第一监测模块,用于利用所述线程对任务队列中的各纤程任务进行监测以确定是否到达各所述纤程任务对应的执行时间;
执行模块,用于在到达所述任务队列中的任意一个所述纤程任务对应的执行时间,则执行对应的所述纤程任务;
第二监测模块,用于利用所述线程监测是否有待处理消息;
处理模块,用于在存在待处理消息时,则暂停当前的对纤程任务的执行过程,并对所述待处理消息进行处理;
输出模块,用于将对所述待处理消息的处理结果进行输出;
其中,所述执行模块包括:
保存单元,用于在到达所述任务队列中的任意一个所述纤程任务的执行时间,则将所述纤程任务对应的当前的纤程任务入口的寄存器状态存入任务的控制数据结构中;
所述执行模块还用于:
每一个纤程任务根据需要执行的时间来进行排序依次执行;每一个纤程任务按照需要被执行的时间存入任务队列中,线程持续性地对任务队列中的各纤程任务进行监控,以检测是否到达其中任意一个纤程任务对应的被执行时间。
7.根据权利要求6所述的多任务调度装置,其特征在于,各所述纤程任务拥有对应的寄存器状态,所述执行模块包括:
判断单元,用于判断是否存在上次中断后所保存的数据;
第一执行单元,用于在存在上次中断后所保存的数据时,加载所述保存的数据,并从上次中断的中断点恢复执行所述纤程任务;
第二执行单元,用于在不存在上次中断后所保存的数据时,从纤程任务入口开始执行所述纤程任务。
8.根据权利要求6所述的多任务调度装置,其特征在于,所述多任务调度装置还包括:
第一保存模块,用于将所述纤程任务在暂停时的中断点所对应的自身寄存器状态保存至任务的控制数据结构中;
第二保存模块,用于将所述纤程任务对应的栈缓冲区中的数据存入所述任务的控制数据结构中;
排序模块,用于将所述纤程任务重新加入所述任务队列中以进行纤程任务排序。
9.根据权利要求6所述的多任务调度装置,其特征在于,所述第二监测模块用于利用所述线程对消息队列进行巡查,以监测是否有用户传入的待处理消息。
10.根据权利要求6-9任意一项所述的多任务调度装置,其特征在于,所述多任务调度装置还包括:
休眠模块,用于在未到达所述任务队列中任意一个纤程对应的执行时间时,进行休眠状态,执行预设时长的休眠。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811406657.2A CN109491780B (zh) | 2018-11-23 | 2018-11-23 | 多任务调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811406657.2A CN109491780B (zh) | 2018-11-23 | 2018-11-23 | 多任务调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109491780A CN109491780A (zh) | 2019-03-19 |
CN109491780B true CN109491780B (zh) | 2022-04-12 |
Family
ID=65697728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811406657.2A Expired - Fee Related CN109491780B (zh) | 2018-11-23 | 2018-11-23 | 多任务调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491780B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110086688A (zh) * | 2019-04-18 | 2019-08-02 | 上海锵戈科技有限公司 | 一种多监测任务多目标高效ip端性能监测调度方法及*** |
CN111813557A (zh) * | 2020-07-21 | 2020-10-23 | 北京千丁互联科技有限公司 | 任务处理装置、方法、终端设备和可读存储介质 |
CN112181641A (zh) * | 2020-09-14 | 2021-01-05 | ***股份有限公司 | 线程处理方法、装置、设备及存储介质 |
CN112631762B (zh) * | 2020-12-31 | 2023-10-27 | 东软睿驰汽车技术(沈阳)有限公司 | 一种车辆任务切换的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991823A (zh) * | 2015-07-02 | 2015-10-21 | 北京京东尚科信息技术有限公司 | 实现Javascript多任务机制的方法和设备 |
CN107491346A (zh) * | 2016-06-12 | 2017-12-19 | 阿里巴巴集团控股有限公司 | 一种应用的任务处理方法、装置及*** |
CN107832146A (zh) * | 2017-10-27 | 2018-03-23 | 北京计算机技术及应用研究所 | 高可用集群***中的线程池任务处理方法 |
CN107924330A (zh) * | 2015-09-25 | 2018-04-17 | 英特尔公司 | 用于集成的线程调度的技术 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003102758A1 (en) * | 2002-05-31 | 2003-12-11 | University Of Delaware | Method and apparatus for real-time multithreading |
US8607235B2 (en) * | 2004-12-30 | 2013-12-10 | Intel Corporation | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention |
US7810083B2 (en) * | 2004-12-30 | 2010-10-05 | Intel Corporation | Mechanism to emulate user-level multithreading on an OS-sequestered sequencer |
US9152464B2 (en) * | 2010-09-03 | 2015-10-06 | Ianywhere Solutions, Inc. | Adjusting a server multiprogramming level based on collected throughput values |
CN103136047B (zh) * | 2011-11-30 | 2016-08-17 | 大唐联诚信息***技术有限公司 | 一种多线程管理方法及架构 |
US9552231B2 (en) * | 2012-09-27 | 2017-01-24 | Adobe Systems Incorporated | Client classification-based dynamic allocation of computing infrastructure resources |
CN103473031B (zh) * | 2013-01-18 | 2015-11-18 | 龙建 | 协同并发式消息总线、主动构件组装模型及构件拆分方法 |
-
2018
- 2018-11-23 CN CN201811406657.2A patent/CN109491780B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991823A (zh) * | 2015-07-02 | 2015-10-21 | 北京京东尚科信息技术有限公司 | 实现Javascript多任务机制的方法和设备 |
CN107924330A (zh) * | 2015-09-25 | 2018-04-17 | 英特尔公司 | 用于集成的线程调度的技术 |
CN107491346A (zh) * | 2016-06-12 | 2017-12-19 | 阿里巴巴集团控股有限公司 | 一种应用的任务处理方法、装置及*** |
CN107832146A (zh) * | 2017-10-27 | 2018-03-23 | 北京计算机技术及应用研究所 | 高可用集群***中的线程池任务处理方法 |
Non-Patent Citations (2)
Title |
---|
"基于Erlang技术虚拟线程机制的设计与实现";范晓可;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160515(第05期);第I138-340页 * |
"基于流水线的优先级队列排序的VLSI实现";唐兴旺;《微电子学与计算机》;20060330;第23卷(第2期);第35-37、41页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109491780A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109491780B (zh) | 多任务调度方法及装置 | |
US9489236B2 (en) | Application prioritization | |
US8914805B2 (en) | Rescheduling workload in a hybrid computing environment | |
US7689838B2 (en) | Method and apparatus for providing for detecting processor state transitions | |
EP2885707B1 (en) | Latency sensitive software interrupt and thread scheduling | |
US7137117B2 (en) | Dynamically variable idle time thread scheduling | |
US8056083B2 (en) | Dividing a computer job into micro-jobs for execution | |
WO2017080273A1 (zh) | 任务管理方法和***、计算机存储介质 | |
US8312195B2 (en) | Managing interrupts using a preferred binding between a device generating interrupts and a CPU | |
US9298504B1 (en) | Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system | |
US20120054770A1 (en) | High throughput computing in a hybrid computing environment | |
Xu et al. | Adaptive task scheduling strategy based on dynamic workload adjustment for heterogeneous Hadoop clusters | |
CN109840149B (zh) | 任务调度方法、装置、设备及存储介质 | |
US9798582B2 (en) | Low latency scheduling on simultaneous multi-threading cores | |
US20230127112A1 (en) | Sub-idle thread priority class | |
CN111722697B (zh) | 中断处理***与中断处理方法 | |
US20210191757A1 (en) | Sub-idle thread priority class | |
WO2016160639A1 (en) | Power aware scheduling and power manager | |
Li et al. | Energy-efficient execution for repetitive app usages on big. LITTLE architectures | |
Maruf et al. | Extending resources for avoiding overloads of mixed‐criticality tasks in cyber‐physical systems | |
Kang et al. | Nmap: Power management based on network packet processing mode transition for latency-critical workloads | |
US9229716B2 (en) | Time-based task priority boost management using boost register values | |
CN110837415A (zh) | 一种基于risc-v多核处理器的线程调度方法和装置 | |
WO2018206793A1 (en) | Multicore processing system | |
US11055137B2 (en) | CPU scheduling methods based on relative time quantum for dual core environments |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220412 |