CN107491346A - 一种应用的任务处理方法、装置及*** - Google Patents
一种应用的任务处理方法、装置及*** Download PDFInfo
- Publication number
- CN107491346A CN107491346A CN201610407172.XA CN201610407172A CN107491346A CN 107491346 A CN107491346 A CN 107491346A CN 201610407172 A CN201610407172 A CN 201610407172A CN 107491346 A CN107491346 A CN 107491346A
- Authority
- CN
- China
- Prior art keywords
- task
- application
- thread
- idle condition
- 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.)
- Granted
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)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种应用的任务处理方法、装置及***,所述方法包括:将应用的后台任务保存在任务队列中;监听应用是否处于空闲状态;当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。本申请提供的技术方案,面对多任务导致应用卡顿问题,提出了应用闲时处理任务机制,能够有效地提高应用启动性能和处理性能。针对终端***资源有限的特性,提出了使用单一线程串行执行后台任务的方式,从而保证后台任务的正常执行,又能够合理利用终端***资源,尽可能在执行后台任务时,减小对应用前台任务的影响。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种应用的任务处理方法、装置及***。
背景技术
应用,也称应用程序(Application,缩写APP),其是指智能终端的第三方应用程序。用户通过智能终端上的APP实现各种软件功能。
目前,APP在在启动过程或者在使用过程中,常常会出现许多任务在主线程或者其他线程同时执行的情况。而由于智能终端的处理器性能、内存大小的限制,过多的任务并行处理可能会导致***不能及时处理完成,严重时会造成APP卡顿问题,导致APP运行性能差,用户体验不好。
发明内容
本申请所要解决的技术问题是提供一种应用的任务处理方法,用于提高APP运行性能。
本申请还提供了一种应用的任务处理装置和***,用以保证上述方法在实际中的实现及应用。
为了解决上述技术问题,本申请第一方面提供了一种应用的任务处理***,该***包括:
至少一个处理器和至少一个存储器,所述至少一个存储器中存储有至少一个应用的指令;所述至少一个处理器用于执行所述至少一个存储器中存储的以下指令:
将应用的后台任务保存在任务队列中;
监听应用是否处于空闲状态;
当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
本申请第二方面提供了一种应用的任务处理方法,该方法包括:
将应用的后台任务保存在任务队列中;
监听应用是否处于空闲状态;
当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
本申请第三方面提供一种应用的任务处理装置,该装置包括:
存储单元,用于将应用的后台任务保存在任务队列中;
监听单元,用于监听应用是否处于空闲状态;
触发单元,用于当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
与现有技术相比,本申请包括以下优点:
本申请提供的技术方案,针对多任务并行处理容易造成应用运行卡顿的问题,提出了应用闲时处理后台任务机制和单一线程串行处理后台任务的机制,在这两种机制下,将应用的后台任务保存在任务队列中;监听应用是否处于空闲状态;当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。该技术方案既能够保证后台任务的正常执行,又能够合理利用终端***资源,尽可能在执行后台任务时,减小对应用前台任务的影响,从而提高APP运行性能,提高用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用的任务处理***的结构示意图;
图2是本申请实施例提供的一种应用的任务处理方法的流程图;
图3是本申请实施例提供的针对应用后台任务的任务执行过程的流程图;
图4是本申请实施例提供的一种应用的任务处理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
先对本申请提供的***进行实例性解释说明。
本申请提供的一种应用的任务处理***,可以包括:至少一个处理器和至少一个存储器,所述至少一个存储器中存储应用、与应用对应的任务队列、处理器创建的线程、以及指令;所述至少一个处理器用于执行所述至少一个存储器中存储的指令。
为了更清楚地解释说明该***的结构和工作原理,下面以图1所示的***结构图为例来对该***进行示例性说明。
参见图1所示的一种应用的任务处理***结构图,该***100,包括:
处理器101和存储器102;处理器101读取存储器102中的指令,执行读取到的指令。
其中,存储器102中存储有一些可操作的指令:
将应用的后台任务保存在任务队列中;
监听应用是否处于空闲状态;
当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
处理器101在执行这些指令时,先将与应用相关的后台任务保存在与应用对应的任务队列中,该任务队列存储于存储器102中。
如图1所示,存储器中存储有应用1以及对应任务队列1;当然,存储器中也会有多个应用以及每个应用各自对应的任务队列;如图1中虚线部分示出的应用2以及与应用2对应的任务队列2;应用3以及与应用3对应的任务队列3。当然,在实现时,一个应用可以对应于一个任务队列,也可以对应有多个任务队列。对于存储器能够用于存储多少应用以及对应的任务队列,取决于存储器的容量大小,对此本申请不作任何限定。
在本***的实现时,存储器可以是指处理器能够通过指令中的地址直接访问的存储器,常用于存放处于活动状态的程序和数据。
在本***的实现时,存储器也可以是指辅助存储器,或者称外存储器,例如:硬盘、磁盘、光盘等;存储器还可以是缓存、快存等存储器。
在将应用的任务存储在任务队列之后,处理器101监听应用的忙闲状态,当监听到应用处于空闲状态时,处理器101就触发预先存储在存储器102中的、用于处理后台任务的线程,触发该任务线程执行任务队列中的任务。
利用该***,能够针对应用的后台任务进行管理,并通过创建的一个特定线程串行处理这些后台任务,避免创建过多线程对***造成过多开销,从而,既能够最小化占用***资源,又能够保证后台任务的执行。从应用的运行角度分析,利用单一线程处理应用的后台任务,并不会影响应用前台任务的处理,能够极大地提高应用的运行性能,从而提升用户体验。
处理器101在执行这些指令时,并不局限于针对哪一个特定的应用的后台任务进行处理,而是能够适应于任何一个需要进行后台任务处理的应用。处理器101可以仅针对一个应用的后台任务进行处理,也可以同时对多个应用的后台任务处理。
图1所示的一种应用的任务处理***仅包含一个处理器和一个存储器。本申请提供的***还可以有以下几种结构形态:
第一种,***包括:多个处理器(多个包括:至少两个)和一个存储器;这种结构的***,多个处理器都与存储器进行数据交互,不同的处理器用于处理不同应用的后台任务,具体执行指令同上文描述。
第二种,***包括:一个处理器和多个存储器;不同的存储器可以用来存储不同的应用及其后台任务的任务队列;则处理器用于处理所有应用的后台任务,处理器根据应用的标识,从对应的存储器中读取任务触发线程来执行该应用的后台任务。
第三种,***包括:多个处理器和多个存储器;不同的存储器可以用来存储不同的应用及其后台任务的任务队列;则不同处理器用于处理不同的应用的后台任务;一个处理器可以与一个存储器或者多个存储器进行数据交互;具体的,处理器根据应用的标识,从对应的存储器中读取任务触发线程来执行该应用的后台任务。
以上内容对本申请提供的一种应用的任务处理***进行了描述。
接下来,对本申请提供的一种应用的任务处理方法进行解释说明。
参加图2,图2是本申请提供的方法流程图,该方法包括以下步骤201至步骤203;
步骤201:将应用的后台任务保存在任务队列中。
应用是指为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,能够为用户提供各种不同的应用体验。用户设备上可以安装一款应用,也可以安装多款应用;一般情况下,用户通常会在设备上安装多款应用,以实现不同的功能。
应用在启动阶段都需要执行一些后台任务,用以支持应用的正常运行。当然,应用除了在启动阶段,在启动后的使用阶段中也会有一些后台任务需要被执行,例如应用功能属性参数的定期更新任务、应用特定功能的定期优化任务等等。不同的应用其关联的后台任务可能相同也可能不相同。
例如:在手机淘宝应用的启动阶段,需要执行网络初始化任务、登录信息初始化任务、异常捕获SDK初始化任务、异常修改模块初始化任务等等。
针对设备上安装有多款应用的应用场景,则针对每一款应用建立一个对应的任务队列,将应用的后台任务保存在与应用对应的任务队列中。
在实现时,针对设备上已启动的应用建立对应的任务队列,并保存应用与任务队列之间的一一对应关系。例如:可以保存应用的唯一标识与任务队列的唯一标识之间的一一对应关系;也可以保存应用的名称与任务队列的地址之间的一一对应关系。
基于保存的这种对应关系,能够快速、准确地将与某个应用相关的后台任务存储在于这个应用对应的任务队列中。
则,所述将应用的后台任务保存在任务队列中,包括:
根据应用的后台任务的等级关系,将低等级的任务保存在第一任务队列中,并将高等级的任务保存在第二任务队列中;
则所述触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务,具体为:
触发预设的一个任务线程按照串行执行方式执行所述第一任务队列中保存的任务;
则所述方法还包括:
创建多个任务线程,触发所述多个任务线程并行执行所述第二任务队列中保存的任务。
步骤102:监听应用是否处于空闲状态。
考虑到在类Unix***下(比如苹果公司的iOS),如何判断应用是否处于空闲状态,仍旧是一个难题。为了更好地适应于该***,本申请提供了特定的技术手段,具体如下:
通过应用的主线程运行回路(run loop)的观察者(observer)监听主线程的运行回路的状态;
当监听到运行回路进入睡眠状态时,则表明应用处于空闲状态;
其中,所述观察者包含一个回调函数,用于监听运行回路的状态变化情况。
为了便于本领域技术人员理解上述技术手段,接下来对主线程、主线程的runloop以及run loop observer进行解释说明。
主线程,当一个应用启动时,就会有一个进程***作***创建,于此同时一个线程也立刻运行,该线程通常叫做应用的主线程。
Run loop实际上是一个对象,该对象管理了其需要处理的事件和消息,并提供了一个入口函数执行事件循环逻辑。线程执行了该函数后,就会一直处于这个函数内部的“接收消息-等待-处理”的循环中,直到这个循环结束,比如传入quit的消息,函数就返回。
Run loop处理来自输入源(input source)和定时源(timer source)
的输入事件,输入源传递异步消息,通常来自于其他线程或者程序。定时源则传递同步消息,在特定时间或者一定的时间间隔发生。
除了处理输入源,run loop也会生成关于run loop行为的通知(notification)。run loop观察者可以收到这些notification,并做相应的处理,以及其运行的模式。
Run loop每次运行时都必须指定其运行在哪个模式下,run loop模式是所有要监视的输入源和定时源以及要通知的注册观察者的集合。通常情况下,通过指定名字来确定模式,即,每个模式都有对应的名字,如字符串标识。
***处理用户点击,网络请求返回等活动状态都需要主线程Run loop在唤醒状态进行执行,而当应用进入空闲状态时主线程Run loop会相应地进入睡眠状态。所以,这里通过添加观察者接收Run loop进入睡眠和唤醒的状态,能够判断应用是否空闲,当run loop进入睡眠状态则表示应用空闲状态,当run loop进入唤醒状态则表示应用处于忙碌状态。
本申请实施例提供的监听方式,正是利用Run loop观察者接收各种行为的通知,从而来监听应用是否处于空闲状态。
步骤103:当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
在实现时,可以通过如下方式实现步骤103,该方式包括:
当监听到应用处于空闲状态时,触发所述预设的一个任务线程采用先入先出算法从所述任务队列中读取并执行任务;
当一个任务执行完毕时,判断应用当前是否处于空闲状态;如果是,则触发所述预设的一个任务线程继续读取并执行任务。
当然,除了按照上述先入先出(First In First Out,FIFO)算法读取并执行任务之外,也可以按照任务的重要等级高低顺序依次读取并执行任务。
接下来对上述实现方式进行更具体的描述。
参加图3,如图3所示,预设的一个任务线程按照步骤(1)、(2)、(3)、(4)的处理逻辑顺序来执行相应操作。
预设的一个任务线程,执行步骤(1)按照先入先出原则从应用对应的任务队列中,获取第一个任务;执行步骤(2),即,执行该任务,当该任务执行完毕时,执行步骤(3),查看应用当前状态是否为空闲状态,如果是,返回步骤(1),即,继续从任务队列中获取下一个任务,再继续执行步骤(2),并在任务执行完毕时,再查看应用当前状态是否为空闲状态,依次方式循环执行。
但,当一个任务执行完毕时,查看出应用当前状态为繁忙状态时,则该预设的一个任务线程结束处理。
从上述内容我们可以看出,本申请提供的针对应用的任务处理方法,面对多任务导致应用卡顿问题,提出了应用闲时处理机制,有效地提高了应用启动性能和使用体验。
另外,针对如何判断应用空闲状态难题,提出了通过监听主线程Run loop状态方式来判断应用是否空闲状态。最后,针对***资源有限的特性,提出了为应用的所有后台任务创建单一线程,利用单一线程串行处理后台任务的技术手段,从而避免创建过多线程给***造成开销过大,影响应用前台任务处理的问题。
APP启动之后,用户随时可能会发起相应的操作,为了保证APP能够及时响应用户的操作,本申请还提供了另一种技术手段,该技术手段是:
设置所述预设的一个任务线程的优先级等级低于主线程的优先级等级,以使所述预设的一个任务线程和所述主线程在都有任务执行的情况下,按照优先级先后顺序执行任务。
主线程是必须在第一时间响应用户发起的操作请求,因此,利用该技术手段使得预设的一个任务线程不影响主线程的操作,以保证主线程优先利用***资源,优先处理前台任务,从而有效地提升用户体验。
另外,当监听应用处于繁忙状态时,也可以触发所述预设的一个任务线程暂停当前正在执行的任务。这样,也能够及时地为前台任务提供***资源,使得主线程及时处理前台任务。
一般情况下,应用在启动阶段或者在使用阶段,需要执行的后台任务的重要等级程度差不多,但也有一些特殊情况下,一些应用的后台任务具有严格的等级区分,等级高的任务直接影响应用的正常运行。则等级高的任务必须优先、快速被执行。而等级低的任务对应用在一段时间内的正常运行影响不大,则这种等级低的任务,可以延迟执行。针对这种情况,本申请还提供了特定的技术手段,具体如下:
上述步骤201可以包括:
根据应用的后台任务的等级关系,将低等级的任务保存在第一任务队列中,并将高等级的任务保存在第二任务队列中;
则所述触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务,具体为:
触发预设的一个任务线程按照串行执行方式执行所述第一任务队列中保存的任务;
则在图2所示的方法步骤的基础上,还可以增加如下步骤:
创建多个任务线程,触发所述多个任务线程并行执行所述第二任务队列中保存的任务。
上述第一任务队列是指第一类任务队列,该第一任务队列在实际中,可以包含一个队列,也可以包含多个队列;第二任务队列是指第二类任务队列,仅为了与第一类任务队列相区分,该第二任务队列在实际中,可以包含一个队列,也可以包含多个队列。
利用该技术手段将等级高和等级低的任务分别保存在不同的任务队列中,创建多线程并行执行等级高的任务,利用单线程串行执行等级低的任务,这样,既能够满足应用的不同任务的执行需求,又能够尽量避免对应用的前台紧急任务的影响。
上文中描述的高等级任务是指任务重要等级大于等于等级阈值的任务;而低等级的任务是指任务重要等级小于等级阈值的任务。其中,等级阈值的大小可以根据实际需要而设定。在实际应用场景中,应用的每个后台任务都有一个对应的等级值,通过对比该等级值与阈值的大小关系,就能够确定任务时高等级任务还是低等级任务。
以上对本申请提供的方法进行了解释说明。
接下来对本申请提供的一种应用的任务处理装置进行解释说明。
参见图4,图4是本申请实施例提供的一种应用的任务处理装置的结构示意图,如图4所示,该装置包括:存储单元401、监听单元402和触发单元403;下面基于该装置的工作原理对各单元的具体结构和功能进行解释说明。
存储单元401,用于将应用的后台任务保存在任务队列中;
监听单元402,用于监听应用是否处于空闲状态;
触发单元403,用于当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
在实现时,所述监听单元402,可以包括:
监听子单元,用于通过应用的主线程运行回路的观察者监听主线程的运行回路的状态;当监听到运行回路进入睡眠状态时,则表明应用处于空闲状态;其中,所述观察者包含一个回调函数,用于监听运行回路的状态变化情况。
在实现时,所述装置还可以包括:
优先级设置单元,用于设置所述预设的一个任务线程的优先级等级低于主线程的优先级等级,以使所述预设的一个任务线程和所述主线程在都有任务执行的情况下,按照优先级先后顺序执行任务。
在实现时,所述存储单元401,可以包括:
双队列存储子单元,用于根据应用的后台任务的等级关系,将低等级的任务保存在第一任务队列中,并将高等级的任务保存在第二任务队列中;
则所述触发单元403,可以包括:
第一触发子单元,用于触发预设的一个任务线程按照串行执行方式执行所述第一任务队列中保存的任务;
则所述装置还包括:
多线程创建及触发单元,用于创建多个任务线程,触发所述多个任务线程并行执行所述第二任务队列中保存的任务。在实现时,所述触发单元403,可以包括:
第二触发子单元,用于当监听到应用处于空闲状态时,触发所述预设的一个任务线程采用先入先出算法从所述任务队列中读取并执行任务;当一个任务执行完毕时,进入判断子单元;
判断子单元,用于当一个任务执行完毕时,判断应用当前状态是否为空闲状态;如果是,再进入所述第二触发子单元继续读取并执行任务。
在实现时,所述装置还可以包括:
暂停触发单元,用于当所述预设的一个任务线程在执行任务的同时,监听到应用处于繁忙状态,则触发所述预设的一个任务线程暂停当前正在执行的任务。
利用本申请实施例提供的上述装置,能够针对应用的后台任务进行管理,并通过创建的一个特定线程串行处理这些后台任务,避免创建过多线程对***造成过多开销,从而,既能够最小化占用***资源,又能够保证后台任务的执行。从应用的运行角度分析,利用单一线程处理应用的后台任务,并不会影响应用前台任务的处理,能够极大地提高应用的运行性能,从而提升用户体验。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种应用的任务处理方法、装置及***进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种应用的任务处理***,其特征在于,所述***包括:至少一个处理器和至少一个存储器,所述至少一个存储器中存储指令;所述至少一个处理器用于执行所述至少一个存储器中存储的以下指令:
将应用的后台任务保存在任务队列中;
监听应用是否处于空闲状态;
当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
2.根据权利要求1所述的一种应用的任务处理***,其特征在于,所述至少一个处理器在执行所述监听应用是否处于空闲状态的指令时,具体执行以下指令:
通过应用的主线程运行回路的观察者监听主线程的运行回路的状态;
当监听到运行回路进入睡眠状态时,则表明应用处于空闲状态;
其中,所述观察者包含一个回调函数,用于监听运行回路的状态变化情况。
3.根据权利要求1所述的一种应用的任务处理***,其特征在于,所述至少一个处理器还用于执行以下指令:
设置所述预设的一个任务线程的优先级等级低于主线程的优先级等级,以使所述预设的一个任务线程和所述主线程在都有任务执行的情况下,按照优先级先后顺序执行任务。
4.根据权利要求1所述的一种应用的任务处理***,其特征在于,所述至少一个处理器在执行将应用的后台任务保存在任务队列中的执行时,具体执行以下指令:
根据应用的后台任务的等级关系,将低等级的任务保存在第一任务队列中,并将高等级的任务保存在第二任务队列中;
则所述触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务的指令,具体为:
触发预设的一个任务线程按照串行执行方式执行所述第一任务队列中保存的任务;
则所述至少一个处理器还执行以下指令:
创建多个任务线程,触发所述多个任务线程并行执行所述第二任务队列中保存的任务。
5.根据权利要求1所述的一种应用的任务处理***,其特征在于,所述至少一个处理器在执行当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务的指令时,具体执行以下指令:
当监听到应用处于空闲状态时,触发所述预设的一个任务线程采用先入先出算法从所述任务队列中读取并执行任务;
当一个任务执行完毕时,判断应用当前是否处于空闲状态;如果是,则触发所述预设的一个任务线程继续读取并执行任务。
6.一种应用的任务处理方法,其特征在于,所述方法包括:
将应用的后台任务保存在任务队列中;
监听应用是否处于空闲状态;
当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
7.根据权利要求6所述的一种应用的任务处理方法,其特征在于,所述监听应用是否处于空闲状态,包括:
通过应用的主线程运行回路的观察者监听主线程的运行回路的状态;
当监听到运行回路进入睡眠状态时,则表明应用处于空闲状态;
其中,所述观察者包含一个回调函数,用于监听运行回路的状态变化情况。
8.根据权利要求6所述的一种应用的任务处理方法,其特征在于,所述方法还包括:
设置所述预设的一个任务线程的优先级等级低于主线程的优先级等级,以使所述预设的一个任务线程和所述主线程在都有任务执行的情况下,按照优先级先后顺序执行任务。
9.根据权利要求6所述的一种应用的任务处理方法,其特征在于,所述将应用的后台任务保存在任务队列中,包括:
根据应用的后台任务的等级关系,将低等级的任务保存在第一任务队列中,并将高等级的任务保存在第二任务队列中;
则所述触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务,具体为:
触发预设的一个任务线程按照串行执行方式执行所述第一任务队列中保存的任务;
则所述方法还包括:
创建多个任务线程,触发所述多个任务线程并行执行所述第二任务队列中保存的任务。
10.根据权利要求6所述的一种应用的任务处理方法,其特征在于,所述当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务,包括:
当监听到应用处于空闲状态时,触发所述预设的一个任务线程采用先入先出算法从所述任务队列中读取并执行任务;
当一个任务执行完毕时,判断应用当前是否处于空闲状态;如果是,则触发所述预设的一个任务线程继续读取并执行任务。
11.根据权利要求6所述的一种应用的任务处理方法,其特征在于,所述方法还包括:
当所述预设的一个任务线程在执行任务的同时,监听到应用处于繁忙状态,则触发所述预设的一个任务线程暂停当前正在执行的任务。
12.一种应用的任务处理装置,其特征在于,所述装置包括:
存储单元,用于将应用的后台任务保存在任务队列中;
监听单元,用于监听应用是否处于空闲状态;
触发单元,用于当监听到应用处于空闲状态时,触发预设的一个任务线程按照串行执行方式执行所述任务队列中保存的任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610407172.XA CN107491346B (zh) | 2016-06-12 | 2016-06-12 | 一种应用的任务处理方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610407172.XA CN107491346B (zh) | 2016-06-12 | 2016-06-12 | 一种应用的任务处理方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107491346A true CN107491346A (zh) | 2017-12-19 |
CN107491346B CN107491346B (zh) | 2021-03-12 |
Family
ID=60643047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610407172.XA Active CN107491346B (zh) | 2016-06-12 | 2016-06-12 | 一种应用的任务处理方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107491346B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491780A (zh) * | 2018-11-23 | 2019-03-19 | 鲍金龙 | 多任务调度方法及装置 |
CN109697128A (zh) * | 2018-12-19 | 2019-04-30 | 北京爱奇艺科技有限公司 | 一种线程维护方法、装置及电子设备 |
CN110110306A (zh) * | 2019-04-12 | 2019-08-09 | 平安医疗健康管理股份有限公司 | 数据展示方法、装置、终端及计算机可读存储介质 |
CN110297741A (zh) * | 2019-06-24 | 2019-10-01 | 杭州迪普信息技术有限公司 | 一种后台任务监控方法及装置 |
CN110928696A (zh) * | 2020-02-13 | 2020-03-27 | 北京一流科技有限公司 | 用户级线程控制***及其方法 |
CN111061556A (zh) * | 2019-12-26 | 2020-04-24 | 深圳前海环融联易信息科技服务有限公司 | 执行优先级任务的优化方法、装置、计算机设备及介质 |
CN111831432A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | Io请求的调度方法、装置、存储介质及电子设备 |
WO2021013055A1 (zh) * | 2019-07-20 | 2021-01-28 | 华为技术有限公司 | 数据处理的方法、装置及电子设备 |
CN113031870A (zh) * | 2021-03-26 | 2021-06-25 | 山东英信计算机技术有限公司 | 一种集群***动态管理方法、装置、存储介质及设备 |
CN114968551A (zh) * | 2022-03-10 | 2022-08-30 | 中移互联网有限公司 | 一种进程管理的方法、装置、电子设备及存储介质 |
CN115114028A (zh) * | 2022-07-05 | 2022-09-27 | 南方电网科学研究院有限责任公司 | 一种电力仿真二次控制的任务分配方法及装置 |
CN110908724B (zh) * | 2019-12-03 | 2024-06-07 | 深圳市迅雷网络技术有限公司 | 一种Android App启动方法及相关组件 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012841A (zh) * | 2010-09-21 | 2011-04-13 | 上海大学 | 一种前瞻失效线程重启调度方法 |
CN102393822A (zh) * | 2011-11-30 | 2012-03-28 | 中国工商银行股份有限公司 | 批量调度***及方法 |
CN102662633A (zh) * | 2012-03-16 | 2012-09-12 | 深圳第七大道科技有限公司 | 一种Flash任务的多线程处理方法和*** |
US20120303756A1 (en) * | 2009-04-03 | 2012-11-29 | Google Inc. | System and method for reducing startup cost of a software application |
US20140373020A1 (en) * | 2013-06-13 | 2014-12-18 | Wipro Limited | Methods for managing threads within an application and devices thereof |
CN104462420A (zh) * | 2014-12-12 | 2015-03-25 | 北京国双科技有限公司 | 数据库的查询任务的执行方法和装置 |
CN104793996A (zh) * | 2015-04-29 | 2015-07-22 | 中芯睿智(北京)微电子科技有限公司 | 一种并行计算设备的任务调度方法及任务调度装置 |
CN105049240A (zh) * | 2015-06-26 | 2015-11-11 | 大唐移动通信设备有限公司 | 一种消息处理方法及服务器 |
CN105389209A (zh) * | 2015-12-25 | 2016-03-09 | 中国建设银行股份有限公司 | 一种异步批量任务处理方法及*** |
-
2016
- 2016-06-12 CN CN201610407172.XA patent/CN107491346B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120303756A1 (en) * | 2009-04-03 | 2012-11-29 | Google Inc. | System and method for reducing startup cost of a software application |
CN102012841A (zh) * | 2010-09-21 | 2011-04-13 | 上海大学 | 一种前瞻失效线程重启调度方法 |
CN102393822A (zh) * | 2011-11-30 | 2012-03-28 | 中国工商银行股份有限公司 | 批量调度***及方法 |
CN102662633A (zh) * | 2012-03-16 | 2012-09-12 | 深圳第七大道科技有限公司 | 一种Flash任务的多线程处理方法和*** |
US20140373020A1 (en) * | 2013-06-13 | 2014-12-18 | Wipro Limited | Methods for managing threads within an application and devices thereof |
CN104462420A (zh) * | 2014-12-12 | 2015-03-25 | 北京国双科技有限公司 | 数据库的查询任务的执行方法和装置 |
CN104793996A (zh) * | 2015-04-29 | 2015-07-22 | 中芯睿智(北京)微电子科技有限公司 | 一种并行计算设备的任务调度方法及任务调度装置 |
CN105049240A (zh) * | 2015-06-26 | 2015-11-11 | 大唐移动通信设备有限公司 | 一种消息处理方法及服务器 |
CN105389209A (zh) * | 2015-12-25 | 2016-03-09 | 中国建设银行股份有限公司 | 一种异步批量任务处理方法及*** |
Non-Patent Citations (1)
Title |
---|
霜在飞: "利用RUNLOOP空闲时间执行预缓存任务", 《HTTPS://BLOG.CSDN.NET/XSH841272293/ARTICLE/DETAILS/51559396》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491780B (zh) * | 2018-11-23 | 2022-04-12 | 鲍金龙 | 多任务调度方法及装置 |
CN109491780A (zh) * | 2018-11-23 | 2019-03-19 | 鲍金龙 | 多任务调度方法及装置 |
CN109697128A (zh) * | 2018-12-19 | 2019-04-30 | 北京爱奇艺科技有限公司 | 一种线程维护方法、装置及电子设备 |
CN110110306A (zh) * | 2019-04-12 | 2019-08-09 | 平安医疗健康管理股份有限公司 | 数据展示方法、装置、终端及计算机可读存储介质 |
CN110297741A (zh) * | 2019-06-24 | 2019-10-01 | 杭州迪普信息技术有限公司 | 一种后台任务监控方法及装置 |
CN110297741B (zh) * | 2019-06-24 | 2022-11-25 | 杭州迪普信息技术有限公司 | 一种后台任务监控方法及装置 |
WO2021013055A1 (zh) * | 2019-07-20 | 2021-01-28 | 华为技术有限公司 | 数据处理的方法、装置及电子设备 |
CN110908724B (zh) * | 2019-12-03 | 2024-06-07 | 深圳市迅雷网络技术有限公司 | 一种Android App启动方法及相关组件 |
CN111061556A (zh) * | 2019-12-26 | 2020-04-24 | 深圳前海环融联易信息科技服务有限公司 | 执行优先级任务的优化方法、装置、计算机设备及介质 |
CN110928696A (zh) * | 2020-02-13 | 2020-03-27 | 北京一流科技有限公司 | 用户级线程控制***及其方法 |
WO2021159930A1 (zh) * | 2020-02-13 | 2021-08-19 | 北京一流科技有限公司 | 用户级线程控制***及其方法 |
CN110928696B (zh) * | 2020-02-13 | 2020-10-09 | 北京一流科技有限公司 | 用户级线程控制***及其方法 |
CN111831432A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | Io请求的调度方法、装置、存储介质及电子设备 |
CN111831432B (zh) * | 2020-07-01 | 2023-06-16 | Oppo广东移动通信有限公司 | Io请求的调度方法、装置、存储介质及电子设备 |
CN113031870A (zh) * | 2021-03-26 | 2021-06-25 | 山东英信计算机技术有限公司 | 一种集群***动态管理方法、装置、存储介质及设备 |
CN114968551A (zh) * | 2022-03-10 | 2022-08-30 | 中移互联网有限公司 | 一种进程管理的方法、装置、电子设备及存储介质 |
CN114968551B (zh) * | 2022-03-10 | 2023-09-19 | 中移互联网有限公司 | 一种进程管理的方法、装置、电子设备及存储介质 |
CN115114028A (zh) * | 2022-07-05 | 2022-09-27 | 南方电网科学研究院有限责任公司 | 一种电力仿真二次控制的任务分配方法及装置 |
CN115114028B (zh) * | 2022-07-05 | 2023-04-28 | 南方电网科学研究院有限责任公司 | 一种电力仿真二次控制的任务分配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107491346B (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491346A (zh) | 一种应用的任务处理方法、装置及*** | |
US9501319B2 (en) | Method and apparatus for scheduling blocking tasks | |
CN106980492B (zh) | 用于计算的装置、***、方法、机器可读存储介质和设备 | |
CN106293919B (zh) | 一种时间触发的嵌入式任务调度装置与方法 | |
US20130061220A1 (en) | Method for on-demand inter-cloud load provisioning for transient bursts of computing needs | |
CN106557369A (zh) | 一种多线程的管理方法及*** | |
CN104572290A (zh) | 消息处理线程的控制方法及装置 | |
CN101452399B (zh) | 任务二级调度模块及方法 | |
CN109660569B (zh) | 一种多任务并发执行方法、存储介质、设备及*** | |
CN110795254A (zh) | 一种基于php处理高并发io的方法 | |
CN106528288A (zh) | 一种资源管理方法、装置和*** | |
US20120284720A1 (en) | Hardware assisted scheduling in computer system | |
CN103064736A (zh) | 任务处理装置及方法 | |
CN105579963B (zh) | 任务处理装置、电子设备及方法 | |
CN104714839B (zh) | 一种控制进程生命期的方法和装置 | |
US20240202024A1 (en) | Thread processing methods, scheduling component, monitoring component, server, and storage medium | |
Chao et al. | F-mstorm: Feedback-based online distributed mobile stream processing | |
US10122602B1 (en) | Distributed system infrastructure testing | |
CN101770398A (zh) | 一种操作***内核 | |
CN111651279A (zh) | 一种处理业务流程的方法及其处理*** | |
US8977752B2 (en) | Event-based dynamic resource provisioning | |
Sai et al. | Producer-Consumer problem using Thread pool | |
CN109002286A (zh) | 基于同步编程的数据异步处理方法及装置 | |
CN103761106A (zh) | 流程的控制方法及流程引擎 | |
CN113032139A (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 |