CN111831411A - 任务处理方法、装置、存储介质及电子设备 - Google Patents
任务处理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111831411A CN111831411A CN202010627130.3A CN202010627130A CN111831411A CN 111831411 A CN111831411 A CN 111831411A CN 202010627130 A CN202010627130 A CN 202010627130A CN 111831411 A CN111831411 A CN 111831411A
- Authority
- CN
- China
- Prior art keywords
- task
- processed
- thread pool
- type
- target
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000003993 interaction Effects 0.000 claims description 44
- 238000012545 processing Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 abstract description 12
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012360 testing method Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种任务处理方法、装置、存储介质及电子设备。该任务处理方法应用于电子设备,该电子设备配置有目标线程池,该方法包括:获取工作队列中的待处理任务;检测该待处理任务是否为第一类型的任务;若检测到该待处理任务为第一类型的任务,则从该目标线程池中分配线程给该待处理任务;控制该电子设备的系统利用该目标线程池分配的线程优先执行该待处理任务。本申请可以提高电子设备的系统响应速度。
Description
技术领域
本申请属于电子设备技术领域,尤其涉及一种任务处理方法、装置、存储介质及电子设备。
背景技术
随着技术的发展,电子设备所能实现的功能越来越多。基于此,用户会在电子设备中安装许多应用程序用来实现各种各样的功能。比如,用户可以在电子设备中安装游戏类应用、在线视频播放类应用、音频播放类应用等等。这些应用可以满足用户的娱乐和学习等需求。然而,随着电子设备中安装的应用程序越来越多,电子设备的响应速度却变得较慢。
发明内容
本申请实施例提供一种任务处理方法、装置、存储介质及电子设备,可以提高电子设备的系统响应速度。
第一方面,本申请实施例提供一种任务处理方法,应用于电子设备,所述电子设备配置有目标线程池,所述目标线程池中的线程用于处理第一类型的任务,所述第一类型的任务至少包括与用户交互事件关联的任务,所述方法包括:
获取待处理任务;
检测所述待处理任务是否为所述第一类型的任务;
若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务;
控制所述电子设备的系统利用所述目标线程池分配的线程优先执行所述待处理任务。
第二方面,本申请实施例提供一种任务处理装置,应用于电子设备,所述电子设备配置有目标线程池,所述目标线程池中的线程用于处理第一类型的任务,所述第一类型的任务至少包括与用户交互事件关联的任务,所述装置包括:
获取模块,用于获取待处理任务;
检测模块,用于检测所述待处理任务是否为所述第一类型的任务;
分配模块,用于若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务;
执行模块,用于控制所述电子设备的系统利用所述目标线程池分配的线程优先执行所述待处理任务。
第三方面,本申请实施例提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行本申请实施例提供的任务处理方法中的流程。
第四方面,本申请实施例还提供一种电子设备,包括存储器,处理器,所述处理器通过调用所述存储器中存储的计算机程序,用于执行本申请实施例提供的任务处理方法中的流程。
本申请实施例中,电子设备额外配置了目标线程池,该目标线程池中的线程可以专门用于处理第一类型的任务,该第一类型的任务至少包括与用户交互事件关联的任务。当获取到属于第一类型的待处理任务时,电子设备可以从目标线程池中分配线程给该待处理任务,并控制系统利用目标线程池所分配的线程优先执行该待处理任务。由于第一类型的任务是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,因此本申请实施例通过优先执行第一类型的任务的方式,提高了第一类型的任务的响应速度,从而提高了系统的响应速度,减少用户可感知的卡顿,提升了用户体验。
附图说明
下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其有益效果显而易见。
图1是相关技术中工作队列的第一种拓扑结构示意图。
图2是相关技术中工作队列的第二种拓扑结构示意图。
图3是本申请实施例提供的任务处理方法的流程示意图。
图4是本申请实施例提供的任务处理方法的另一流程示意图。
图5是本申请实施例提供的工作队列的第一种拓扑结构示意图。
图6是本申请实施例提供的任务处理方法的又一流程示意图。
图7是本申请实施例提供的工作队列的第二种拓扑结构示意图。
图8是本申请实施例提供的任务处理装置的结构示意图。
图9是本申请实施例提供的电子设备的结构示意图。
图10是本申请实施例提供的电子设备的另一结构示意图。
具体实施方式
请参照图示,其中相同的组件符号代表相同的组件,本申请的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本申请具体实施例,其不应被视为限制本申请未在此详述的其它具体实施例。
下面先对相关技术中的工作队列(Workqueue)的机制进行介绍。
随着智能电子设备的不断发展,电子设备中所使用的内核版本也在不断地更新。内核是一个操作系统的核心,是操作系统最基本的部分。以安卓(android)操作系统为例,Linux内核作为安卓操作系统的核心,提供进程管理、内存管理、文件管理、驱动管理、网络管理等服务,是电子设备各个模块的管理者(manager),也是为用户使用提供服务的服务者(server)。内核可以并行地执行任务,因此需要多个执行线程(kernel thread),一个线程可以处理特定的一个事务,因此内核线程可以看作内核的分身。内核分身即使进入了阻塞状态,也不会影响到其他内核分身的执行。
工作队列(Workqueue)是内核里面很重要的一个机制,特别是内核驱动,一般的较小型的任务(work)都不会自己单独创建一个线程来处理,而是放在工作队列中处理。工作队列的主要工作就是用进程上下文来处理内核中大量的任务(work)。以安卓操作系统为例,目前较新的工作队列的版本为并发可管理工作队列(Concurrency ManagedWorkqueue,CMWQ)。
关于工作队列有如下几个基本概念:任务(work)、工作队列(workqueue)、线程(worker)、线程池(worker pool)。其中,工作队列可以认为是需要执行的任务的集合。一般来说,工作队列和任务是一对多的关系,即一个工作队列中有多个任务。线程即对应内核线程(Thread),线程池可以认为是线程的集合。一般来说,线程池和线程也是一对多的关系,即一个线程池中有多个线程。
例如,以安卓操作系统为例,请一并参阅图1和图2,图1和图2是安卓系统原生的工作队列机制的两种拓扑结构示意图。其中,图1对应的是per-cpu结构,图2对应的是unbound结构。
如图1所示,per-cpu结构是针对每个CPU核都会绑定(bound)两个线程池,这两个线程池分别为普通优先级线程池(normal线程池)和高优先级线程池(high prio线程池)。其中,普通优先级对应于nice值等于0,高优先级对应于nice值等于-20。而且,每个线程池里的线程只能锁定在其所绑定的cpu核上。每个线程池包含的线程数目也不一样。需要说明的是,例如电子设备的CPU为8核CPU,那么per-cpu结构的工作队列对应的CPU核的个数也是8个,即从CPU 0、CPU 1、CPU 2,……,CPU 7,即此时n=7。
如图2所示,在unbound结构下,系统可以建立一个全局哈希表(hash table),该全局哈希表中保存了所有不同类型的unbound线程池,如图2中的节点1(node 1)线程池、节点2(node 2)线程池,……,节点n(node n)线程池。某一个节点的线程池的线程可以在其分配到的多个CPU核上调度,也即是说某一个节点的线程池的线程可以从自己的CPU核列表(cpulist)中选择一个CPU核来运行本线程。例如,节点1的线程池中的线程可以从CPU 0至CPU 3中选择一个CPU核来运行本线程。
在本申请实施例中,图1中各个CPU核所对应的普通优先级线程池(normal线程池)和高优先级线程池(high prio线程池)以及图2中的各个节点所对应的线程池属于电子设备的系统的原生线程池。
可以理解的是,本申请实施例的执行主体可以是诸如智能手机或平板电脑等的电子设备。
请参阅图3,图3是本申请实施例提供的任务处理方法的流程示意图。该任务处理方法可以应用于电子设备中,该电子设备可以配置有目标线程池,该目标线程池中的线程用于处理第一类型的任务,该第一类型的任务至少包括与用户交互事件关联的任务。
该任务处理方法的流程可以包括:
101、获取待处理任务。
随着技术的发展,电子设备所能实现的功能越来越多。基于此,用户会在电子设备中安装许多应用程序用来实现各种各样的功能。比如,用户可以在电子设备中安装游戏类应用、在线视频播放类应用、音频播放类应用等等。这些应用可以满足用户的娱乐和学习等需求。然而,随着电子设备中安装的应用程序越来越多,电子设备的响应速度却变得较慢。
在本申请实施例中,比如,电子设备可以先获取工作队列(workqueue)中的待处理任务。即,电子设备可以从工作队列中获取待处理任务。
102、检测待处理任务是否为第一类型的任务。
比如,在从工作队列中获取到待处理任务后,电子设备可以检测该待处理任务是否为第一类型的任务。
在本实施例中,第一类型的任务可以是需要优先执行的任务,例如第一类型的任务可以是和用户体验紧密相关的任务。例如,本实施例中第一类型的任务可以包括与用户交互事件关联的任务。由于用户交互事件的响应速度决定着是否会在用户交互事件中产生用户可感知的卡顿,这和用户体验紧密相关,因此与用户交互事件关联的任务可以是需要优先执行的任务。
如果检测到待处理任务不是第一类型的任务,那么电子设备可以执行其它操作。例如,基于per-cpu结构的工作队列,如果检测到从工作队列中获取的待处理任务不是第一类型的任务,那么可以认为该待处理任务是一个普通的任务。在这种情况下,系统可以将该待处理任务分配挂载到某个CPU核的线程池(worker pool)对应的任务队列(work list)的队尾,该线程池可以根据任务队列已有的线程情况,动态地创建内核线程去执行该待处理任务。例如,系统可以将待处理任务分配挂载到CPU 0上的普通优先级线程池(normal线程池)对应的任务队列的队尾,该CPU 0的普通优先级线程池可以根据已有的线程情况,动态地创建内核线程去执行该待处理任务。又如,基于unbound结构的工作队列,如果检测到从工作队列中获取的待处理任务不是第一类型的任务,那么可以认为该待处理任务是一个普通的任务。在这种情况下,系统可以将该待处理任务分配到某个节点的线程池(workerpool)对应的任务队列(work list)的队尾,该线程池可以根据任务队列已有的线程情况,动态地选择CPU核并创建内核线程去执行该待处理任务。例如,系统将该待处理任务分配到节点1线程池对应的任务队列的队尾,该节点1线程池可以根据已有的线程情况,动态地从CPU 0至CPU3中选择一个CPU核,并由该CPU核动态地创建内核线程去执行该待处理任务。
如果检测到待处理任务为第一类型的任务,即检测到待处理任务为需要优先执行的任务,那么可以进入103的流程。
103、若检测到待处理任务为第一类型的任务,则从目标线程池中分配线程给该待处理任务。
104、控制电子设备的系统利用目标线程池分配的线程优先执行待处理任务。
比如,由于GPU(Graphics Processing Unit,图形处理器)驱动向安卓上层发送画面绘制完成的信息这一任务和用户体验紧密相关,因此电子设备预先将该任务设置成了第一类型的任务。
例如,101的流程中电子设备从工作队列中获取到的待处理任务正是GPU驱动向安卓上层发送画面绘制完成的信息。那么,电子设备可以检测出待处理任务为第一类型的任务,此时电子设备可以从目标线程池中分配线程给该待处理任务,并控制系统利用该目标线程池分配的线程优先执行该待处理任务。即,电子设备的系统可以将系统资源优先分配给目标线程池中的线程用于执行属于第一类型的待处理任务。
可以理解的是,本申请实施例中,电子设备额外配置了目标线程池,该目标线程池中的线程可以专门用于处理第一类型的任务,该第一类型的任务至少包括与用户交互事件关联的任务。当获取到属于第一类型的待处理任务时,电子设备可以从目标线程池中分配线程给该待处理任务,并控制系统利用目标线程池所分配的线程优先执行该待处理任务。由于第一类型的任务是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,因此本申请实施例通过优先执行第一类型的任务的方式,提高了第一类型的任务的响应速度,从而提高了系统的响应速度,减少用户可感知的卡顿,提升了用户体验。
请参阅图4,图4为本申请实施例提供的任务处理方法的另一流程示意图。该任务处理方法可以应用于电子设备,该电子设备的工作队列采用的工作机制对应的拓扑结构包括per-cpu结构,对应于每一CPU核配置至少一个目标线程池,如图5所示。即,每一CPU核除了配置有原生线程池之外,还额外配置有一个目标线程池。该目标线程池中的线程用于处理第一类型的任务,该第一类型的任务至少包括与用户交互事件关联的任务。由于与用户交互事件关联的任务和用户体验紧密相关,因此本实施例中也可以将第一类型的任务记为ux(User Experience)任务。基于此,本实施例可以将目标线程池记为ux线程池,目标线程池中的线程可以记为ux线程。
本申请实施例提供的任务处理方法的流程可以包括:
201、从per-cpu结构对应的工作队列中获取待处理任务。
比如,电子设备可以先从per-cpu结构对应的工作队列中获取待处理任务。
202、检测待处理任务是否为第一类型的任务。
比如,在从工作队列中获取到待处理任务后,电子设备可以检测该待处理任务是否为第一类型的任务。
如果检测到待处理任务不是第一类型的任务,那么电子设备可以从原生线程池中分配线程给该待处理任务,并利用原生线程池分配的线程来执行该待处理任务。
在本实施例中,电子设备可以将第一类型的任务之外的任务记为第二类型的任务。如果检测到待处理任务为第二类型的任务,那么电子设备可以从原生线程池中分配线程给该待处理任务,并利用原生线程池分配的线程执行该待处理任务。例如,如图5所示,电子设备可以从第二类型的待处理任务推送到某个CPU核上,再从该CPU核的原生线程池(如普通优先级线程池或高优先级线程池)中分配一个线程给该第二类型的待处理任务,并由该分配的线程来执行该待处理任务。
如果检测到待处理任务是第一类型的任务,那么可以进入203的流程。
203、若检测到待处理任务为第一类型的任务,则从电子设备具备的多个CPU核中确定目标CPU核。
204、将待处理任务推送至目标CPU核,并从目标CPU核对应的目标线程池中分配线程给待处理任务。
比如,电子设备检测到待处理任务是第一类型的任务,那么电子设备可以从其具备的多个CPU核中确定出一个目标CPU核,并将待处理任务推送(push)至该目标CPU核。之后,电子设备可以从目标CPU核对应的目标线程池中分配线程给待处理任务。
例如,电子设备将属于第一类型的待处理任务推送至CPU 0,之后电子设备可以从CPU 0对应的目标线程池(ux线程池)中分配线程给该待处理任务。
又如,电子设备将属于第一类型的待处理任务推送至CPU 1,之后电子设备可以从CPU 1对应的目标线程池(ux线程池)中分配线程给该待处理任务。
在一些实施方式中,电子设备可以将第一类型的待处理任务随机地推送至某个CPU核。或者,电子设备也可以将第一类型的待处理任务推送至较为空闲的某个CPU核,例如电子设备可以获取当前各个CPU核的正在执行的线程数量,并将第一类型的待处理任务推送至正在执行的线程数量最少的CPU核。
205、控制电子设备的系统利用目标线程池分配的线程优先执行待处理任务。
比如,在为第一类型的待处理任务分配了目标线程池中的线程后,电子设备可以控制系统利用目标线程池分配的线程优先执行该待处理任务。即,电子设备的系统可以将系统资源优先分配给目标线程池中的线程用于执行属于第一类型的该待处理任务。
因此,在本申请实施例中,当获取到属于第一类型的任务(ux任务)时,电子设备可以将该第一类型的任务分配到目标线程池(ux线程池)中,并由目标线程池分配线程来优先执行该第一类型的任务,从而使第一类型的任务能够被系统优先执行,提升了第一类型的任务的响应速度,提高了用户体验。
请参阅图6,图6为本申请实施例提供的任务处理方法的又一流程示意图。该任务处理方法可以应用于电子设备,该电子设备的工作队列采用的工作机制对应的拓扑结构包括unbound结构,该电子设备还配置有目标工作队列,在用于保存不同类型的线程池的哈希表中配置至少一个目标节点,并将该目标节点对应的线程池确定为目标线程池,该目标工作队列和该目标线程池绑定,它们之间的关系可以如图7所示。该目标线程池中的线程用于处理第一类型的任务,该第一类型的任务至少包括与用户交互事件关联的任务。由于与用户交互事件关联的任务和用户体验紧密相关,因此本实施例中也可以将第一类型的任务记为ux(User Experience)任务。基于此,本实施例可以将目标工作队列记为ux工作队列,目标线程池记为ux线程池,目标线程池中的线程可以记为ux线程。
本申请实施例提供的任务处理方法的流程可以包括:
301、获取待处理任务。
比如,当一个任务被创建后,电子设备可以先获取该任务,并确定为待处理任务。
302、检测待处理任务是否为第一类型的任务。
比如,在获取到待处理任务后,电子设备可以检测该待处理任务是否为第一类型的任务。
如果检测到待处理任务不是第一类型的任务,那么电子设备可以将该待处理任务添加到某一个工作队列中,并从该工作队列对应的原生线程池中分配线程给该待处理任务,并利用原生线程池分配的线程来执行该待处理任务。例如,电子设备可以将该待处理任务添加到如图7所示的工作队列1中,并从该工作队列1对应的节点1的线程池中分配线程给该待处理任务,并利用节点1的线程池分配的线程来执行该待处理任务。
即,在本实施例中,电子设备可以将第一类型的任务之外的任务记为第二类型的任务。如果检测到待处理任务为第二类型的任务,那么电子设备可以从原生线程池中分配线程给该待处理任务,并利用原生线程池分配的线程执行该待处理任务。
如果检测到待处理任务是第一类型的任务,那么可以进入303的流程。
303、若检测到待处理任务为第一类型的任务,则将待处理任务添加到目标工作队列。
304、从目标工作队列绑定的目标线程池中分配线程给待处理任务。
比如,电子设备检测到待处理任务为第一类型的任务,那么电子设备可以将该待处理任务添加到目标工作队列中,并从该目标工作队列绑定的目标线程池中分配线程给该待处理任务。
例如,在检测到待处理任务为第一类型的任务的情况下,电子设备可以将待处理任务添加到图7中的目标工作队列(ux工作队列)中,并从该目标工作队列绑定的节点n+1的线程池(ux线程池)中分配线程给该待处理任务。
305、控制电子设备的系统利用目标线程池分配的线程优先执行待处理任务。
比如,在为第一类型的待处理任务分配了目标线程池中的线程后,电子设备可以控制系统利用目标线程池分配的线程优先执行该待处理任务。即,电子设备的系统可以将系统资源优先分配给目标线程池中的线程用于执行属于第一类型的该待处理任务。
因此,在本申请实施例中,当获取到属于第一类型的任务(ux任务)时,电子设备可以将该第一类型的任务分配到目标线程池(ux线程池)中,并由目标线程池分配线程来优先执行该第一类型的任务,从而使第一类型的任务能够被系统优先执行,提升了第一类型的任务的响应速度,提高了用户体验。
在本申请实施例中,电子设备可以通过如下方式来检测待处理任务是否为第一类型的任务:
每当任务被创建后,识别该任务是否为与用户交互事件关联的任务;
若该任务为与用户交互事件关联的任务,则为该任务添加预设标签;
那么,检测待处理任务是否为第一类型的任务,可以包括:检测待处理任务是否具有预设标签,若待处理任务具有预设标签则确定出待处理任务为第一类型的任务。
比如,每当一个任务被创建后,电子设备可以先识别该任务是否为与用户交互事件关联的任务。如果识别到该任务是与用户交互事件关联的任务,那么电子设备可以为该任务添加一个预设标签(例如记为ux标签)。基于此,当需要检测某一待处理任务是否为第一类型的任务时,电子设备只需检测该待处理任务是否具有预设标签即可。如果待处理任务具有预设标签,那么可以确定出该待处理任务为第一类型的任务。
在一种实施方式中,电子设备可以预先通过对应用程序的运行过程进行的测试分析,获得应用程序中与用户交互事件关联的任务,并获取这些任务的标识。然后,电子设备可以将这些与用户交互事件关联的任务的标识记录到一个文件中,并将该文件确定为预设文件。
基于此,当需要识别某一任务是否为与用户交互事件关联的任务时,电子设备可以获取预设文件,该预设文件中记载有与用户交互事件关联的任务的标识;获取该某一任务的标识,并在预设文件中查找是否存在该某一任务的标识;若预设文件中存在该某一任务的标识,则确定出该某一任务是与用户交互事件关联的任务。
通过上述方式,电子设备可以利用添加标签的方式来区别第一类型的任务和第二类型的任务,并通过识别是否具有预设标签的方式来识别待处理任务是否为第一类型的任务,该实现方式简单、有效。
在一种实施方式中,本申请实施例还可以包括如下流程:
当电子设备的系统初始化各线程池时,为每一目标线程池创建至少一个在空闲状态下能够被保留的线程。
比如,电子设备在系统初始化的时候可以为每一个目标线程池创建至少一个在空闲(idle)状态下不会被销毁的线程。
可以理解的是,由于目标线程池具有在空闲状态下也能够得到保留的线程,因此当有第一类型的任务需要处理时,电子设备可以利用该线程来执行该第一类型的线程,从而实现更快地响应第一类型的任务的效果。
在另一种实施方式中,本申请实施例还可以包括如下流程:获取电子设备的系统中已有的线程数量;
那么,检测待处理任务是否为第一类型的任务,可以包括:若系统中已有的线程数量大于或等于预设数值,则检测待处理任务是否为第一类型的任务。
需要说明的是,系统中已有的线程数量大于或等于预设数值可以认为是系统中已有的线程较多,即系统较为繁忙。在这种情况下,为了提高与用户交互事件关联的任务的响应速度从而减少用户可感知的卡顿以提升用户体验,本申请实施例可以从目标线程池中分配线程给检测到的属于第一类型的待处理任务,以控制系统利用目标线程池分配的线程优先执行第一类型的待处理任务。
请参阅图8,图8为本申请实施例提供的任务处理装置的结构示意图。该任务处理装置可以应用于电子设备中,所述电子设备配置有目标线程池,所述目标线程池中的线程用于处理第一类型的任务,所述第一类型的任务至少包括与用户交互事件关联的任务。任务处理装置400可以包括:
获取模块401,用于获取待处理任务;
检测模块402,用于检测所述待处理任务是否为所述第一类型的任务;
分配模块403,用于若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务;
执行模块404,用于控制所述电子设备的系统利用所述目标线程池分配的线程优先执行所述待处理任务。
在一种实施方式中,所述电子设备的工作队列采用的工作机制对应的拓扑结构包括per-cpu结构,对应于每一CPU核配置至少一个目标线程池。
那么,所述获取模块401用于:从所述per-cpu结构对应的工作队列中获取待处理任务。
所述分配模块403用于:若检测到所述待处理任务为所述第一类型的任务,则从所述电子设备具备的多个CPU核中确定出目标CPU核;将所述待处理任务推送至所述目标CPU核,并从所述目标CPU核对应的目标线程池中分配线程给所述待处理任务。
在一种实施方式中,所述电子设备的工作队列采用的工作机制对应的拓扑结构包括unbound型结构,所述电子设备还配置有目标工作队列,在用于保存不同类型的线程池的哈希表中配置至少一个目标节点,并将所述目标节点对应的线程池确定为目标线程池,所述目标工作队列和所述目标线程池绑定;
那么,所述分配模块403用于:若检测到所述待处理任务为所述第一类型的任务,则将所述待处理任务添加到所述目标工作队列;从所述目标工作队列绑定的目标线程池中分配线程给所述待处理任务。
在一种实施方式中,所述获取模块401还可以用于:每当任务被创建后,识别所述任务是否为与用户交互事件关联的任务;若所述任务为与用户交互事件关联的任务,则为所述任务添加预设标签;
那么,所述检测模块402用于:检测所述待处理任务是否具有预设标签,若所述待处理任务具有所述预设标签则确定出所述待处理任务为所述第一类型的任务。
在一种实施方式中,所述获取模块401还可以用于:
获取预设文件,所述预设文件中记载有与用户交互事件关联的任务的标识;
获取所述任务的标识,并在所述预设文件中查找是否存在所述任务的标识;若所述预设文件中存在所述任务的标识,则确定出所述任务是与用户交互事件关联的任务。
在一种实施方式中,所述电子设备还配置有原生线程池;所述执行模块404还可以用于:
若检测到所述待处理任务为第二类型的任务,则从所述原生线程池中分配线程给所述待处理任务,所述第二类型的任务为除所述第一类型的任务之外的任务;
利用所述原生线程池分配的线程执行所述待处理任务。
在一种实施方式中,所述获取模块401还可以用于:
当所述电子设备的系统初始化各线程池时,为每一所述目标线程池创建至少一个在空闲状态下能够被保留的线程。
本申请实施例提供一种计算机可读的存储介质,其上存储有计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行如本实施例提供的方法中的流程。
本申请实施例还提供一种电子设备,包括存储器,处理器,所述处理器通过调用所述存储器中存储的计算机程序,用于执行本实施例提供的任务处理方法中的流程。
例如,上述电子设备可以是诸如平板电脑或者智能手机等移动终端。请参阅图9,图9为本申请实施例提供的电子设备的结构示意图。
该电子设备500可以包括触摸显示屏501、存储器502、处理器503等部件。本领域技术人员可以理解,图9中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
触摸显示屏501可以用于显示文字、图像等信息,还可以接收用户的触摸操作。触摸显示屏501是电子设备与用户进行交互的一种重要载体。
存储器502可用于存储应用程序和数据。存储器502存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器503通过运行存储在存储器502的应用程序,从而执行各种功能应用以及数据处理。
处理器503是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器502内的应用程序,以及调用存储在存储器502内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
在本实施例中,所述电子设备配置有目标线程池,所述目标线程池中的线程用于处理第一类型的任务,所述第一类型的任务至少包括与用户交互事件关联的任务。电子设备中的处理器503会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器502中,并由处理器503来运行存储在存储器502中的应用程序,从而执行:
获取待处理任务;
检测所述待处理任务是否为所述第一类型的任务;
若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务;
控制所述电子设备的系统利用所述目标线程池分配的线程优先执行所述待处理任务。
请参阅图10,电子设备500可以包括触摸显示屏501、存储器502、处理器503、电池504、麦克风505、扬声器506等部件。
触摸显示屏501可以用于显示文字、图像等信息,还可以接收用户的触摸操作。触摸显示屏501是电子设备与用户进行交互的一种重要载体。
存储器502可用于存储应用程序和数据。存储器502存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器503通过运行存储在存储器502的应用程序,从而执行各种功能应用以及数据处理。
处理器503是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器502内的应用程序,以及调用存储在存储器502内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
电池504可以为电子设备的各个部件和模块的正常运行提供电力支持。
麦克风505可用于采集周围环境中的声音信号,例如麦克风505可以用于采集用户发出的语音信息。
扬声器506可以用于播放声音信号。
在本实施例中,所述电子设备配置有目标线程池,所述目标线程池中的线程用于处理第一类型的任务,所述第一类型的任务至少包括与用户交互事件关联的任务。电子设备中的处理器503会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器502中,并由处理器503来运行存储在存储器502中的应用程序,从而执行:
获取待处理任务;
检测所述待处理任务是否为所述第一类型的任务;
若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务;
控制所述电子设备的系统利用所述目标线程池分配的线程优先执行所述待处理任务。
在一种实施方式中,所述电子设备的工作队列采用的工作机制对应的拓扑结构包括per-cpu结构,对应于每一CPU核配置至少一个目标线程池;
处理器503执行所述获取待处理任务时,可以执行:从所述per-cpu结构对应的工作队列中获取待处理任务;
处理器503执行所述若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务时,可以执行:若检测到所述待处理任务为所述第一类型的任务,则从所述电子设备具备的多个CPU核中确定出目标CPU核;将所述待处理任务推送至所述目标CPU核,并从所述目标CPU核对应的目标线程池中分配线程给所述待处理任务。
在一种实施方式中,所述电子设备的工作队列采用的工作机制对应的拓扑结构包括unbound型结构,所述电子设备还配置有目标工作队列,在用于保存不同类型的线程池的哈希表中配置至少一个目标节点,并将所述目标节点对应的线程池确定为目标线程池,所述目标工作队列和所述目标线程池绑定;
处理器503执行所述若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务时,可以执行:若检测到所述待处理任务为所述第一类型的任务,则将所述待处理任务添加到所述目标工作队列;从所述目标工作队列绑定的目标线程池中分配线程给所述待处理任务。
在一种实施方式中,处理器503还可以执行:每当任务被创建后,识别所述任务是否为与用户交互事件关联的任务;若所述任务为与用户交互事件关联的任务,则为所述任务添加预设标签;
那么,处理器503执行所述检测所述待处理任务是否为所述第一类型的任务时,可以执行:检测所述待处理任务是否具有预设标签,若所述待处理任务具有所述预设标签则确定出所述待处理任务为所述第一类型的任务。
在一种实施方式中,处理器503还可以执行:获取预设文件,所述预设文件中记载有与用户交互事件关联的任务的标识;
那么,处理器503执行所述识别所述任务是否为与用户交互事件关联的任务时,可以执行:获取所述任务的标识,并在所述预设文件中查找是否存在所述任务的标识;若所述预设文件中存在所述任务的标识,则确定出所述任务是与用户交互事件关联的任务。
在一种实施方式中,所述电子设备还配置有原生线程池;所述处理器503还可以执行:若检测到所述待处理任务为第二类型的任务,则从所述原生线程池中分配线程给所述待处理任务,所述第二类型的任务为除所述第一类型的任务之外的任务;利用所述原生线程池分配的线程执行所述待处理任务。
在一种实施方式中,处理器503还可以执行:当所述电子设备的系统初始化各线程池时,为每一所述目标线程池创建至少一个在空闲状态下能够被保留的线程。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对任务处理方法的详细描述,此处不再赘述。
本申请实施例提供的所述任务处理装置与上文实施例中的任务处理方法属于同一构思,在所述任务处理装置上可以运行所述任务处理方法实施例中提供的任一方法,其具体实现过程详见所述任务处理方法实施例,此处不再赘述。
需要说明的是,对本申请实施例所述任务处理方法而言,本领域普通技术人员可以理解实现本申请实施例所述任务处理方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,如存储在存储器中,并被至少一个处理器执行,在执行过程中可包括如所述任务处理方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)等。
对本申请实施例的所述任务处理装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。
以上对本申请实施例所提供的一种任务处理方法、装置、存储介质以及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种任务处理方法,应用于电子设备,其特征在于,所述电子设备配置有目标线程池,所述目标线程池中的线程用于处理第一类型的任务,所述第一类型的任务至少包括与用户交互事件关联的任务,所述方法包括:
获取待处理任务;
检测所述待处理任务是否为所述第一类型的任务;
若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务;
控制所述电子设备的系统利用所述目标线程池分配的线程优先执行所述待处理任务。
2.根据权利要求1所述的任务处理方法,其特征在于,所述电子设备的工作队列采用的工作机制对应的拓扑结构包括per-cpu结构,对应于每一CPU核配置至少一个目标线程池;
所述获取待处理任务,包括:从所述per-cpu结构对应的工作队列中获取待处理任务;
所述若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务,包括:若检测到所述待处理任务为所述第一类型的任务,则从所述电子设备具备的多个CPU核中确定出目标CPU核;将所述待处理任务推送至所述目标CPU核,并从所述目标CPU核对应的目标线程池中分配线程给所述待处理任务。
3.根据权利要求1所述的任务处理方法,其特征在于,所述电子设备的工作队列采用的工作机制对应的拓扑结构包括unbound型结构,所述电子设备还配置有目标工作队列,在用于保存不同类型的线程池的哈希表中配置至少一个目标节点,并将所述目标节点对应的线程池确定为目标线程池,所述目标工作队列和所述目标线程池绑定;
所述若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务,包括:若检测到所述待处理任务为所述第一类型的任务,则将所述待处理任务添加到所述目标工作队列;从所述目标工作队列绑定的目标线程池中分配线程给所述待处理任务。
4.根据权利要求1所述的任务处理方法,其特征在于,所述方法还包括:
每当任务被创建后,识别所述任务是否为与用户交互事件关联的任务;
若所述任务为与用户交互事件关联的任务,则为所述任务添加预设标签;
所述检测所述待处理任务是否为所述第一类型的任务,包括:检测所述待处理任务是否具有预设标签,若所述待处理任务具有所述预设标签则确定出所述待处理任务为所述第一类型的任务。
5.根据权利要求4所述的任务处理方法,其特征在于,所述方法还包括:
获取预设文件,所述预设文件中记载有与用户交互事件关联的任务的标识;
所述识别所述任务是否为与用户交互事件关联的任务,包括:获取所述任务的标识,并在所述预设文件中查找是否存在所述任务的标识;若所述预设文件中存在所述任务的标识,则确定出所述任务是与用户交互事件关联的任务。
6.根据权利要求1所述的任务处理方法,其特征在于,所述电子设备还配置有原生线程池;所述方法还包括:
若检测到所述待处理任务为第二类型的任务,则从所述原生线程池中分配线程给所述待处理任务,所述第二类型的任务为除所述第一类型的任务之外的任务;
利用所述原生线程池分配的线程执行所述待处理任务。
7.根据权利要求1所述的任务处理方法,其特征在于,所述方法还包括:
当所述电子设备的系统初始化各线程池时,为每一所述目标线程池创建至少一个在空闲状态下能够被保留的线程。
8.一种任务处理装置,应用于电子设备,其特征在于,所述电子设备配置有目标线程池,所述目标线程池中的线程用于处理第一类型的任务,所述第一类型的任务至少包括与用户交互事件关联的任务,所述装置包括:
获取模块,用于获取待处理任务;
检测模块,用于检测所述待处理任务是否为所述第一类型的任务;
分配模块,用于若检测到所述待处理任务为所述第一类型的任务,则从所述目标线程池中分配线程给所述待处理任务;
执行模块,用于控制所述电子设备的系统利用所述目标线程池分配的线程优先执行所述待处理任务。
9.一种计算机可读的存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上执行时,使得所述计算机执行如权利要求1至7中任一项所述的方法。
10.一种电子设备,包括存储器,处理器,其特征在于,所述处理器通过调用所述存储器中存储的计算机程序,以执行如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010627130.3A CN111831411B (zh) | 2020-07-01 | 2020-07-01 | 任务处理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010627130.3A CN111831411B (zh) | 2020-07-01 | 2020-07-01 | 任务处理方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831411A true CN111831411A (zh) | 2020-10-27 |
CN111831411B CN111831411B (zh) | 2024-07-30 |
Family
ID=72899654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010627130.3A Active CN111831411B (zh) | 2020-07-01 | 2020-07-01 | 任务处理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831411B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112817745A (zh) * | 2021-01-14 | 2021-05-18 | 内蒙古蒙商消费金融股份有限公司 | 一种任务处理方法及装置 |
CN114489984A (zh) * | 2022-01-26 | 2022-05-13 | 北京火山引擎科技有限公司 | 任务处理方法、装置、电子设备、存储介质及程序产品 |
CN115185677A (zh) * | 2022-06-24 | 2022-10-14 | 湖南长银五八消费金融股份有限公司 | 业务数据合并总账方法、装置、计算机设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159768A (zh) * | 2015-09-09 | 2015-12-16 | 浪潮集团有限公司 | 一种任务管理方法及云数据中心管理平台 |
CN107885666A (zh) * | 2016-09-28 | 2018-04-06 | 华为技术有限公司 | 一种内存管理方法和装置 |
CN108429783A (zh) * | 2018-01-16 | 2018-08-21 | 重庆金融资产交易所有限责任公司 | 电子装置、配置文件推送方法及存储介质 |
US20190163524A1 (en) * | 2017-11-30 | 2019-05-30 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for processing task in smart device |
CN110750339A (zh) * | 2018-07-23 | 2020-02-04 | 杭州海康威视系统技术有限公司 | 一种线程调度方法、装置及电子设备 |
-
2020
- 2020-07-01 CN CN202010627130.3A patent/CN111831411B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159768A (zh) * | 2015-09-09 | 2015-12-16 | 浪潮集团有限公司 | 一种任务管理方法及云数据中心管理平台 |
CN107885666A (zh) * | 2016-09-28 | 2018-04-06 | 华为技术有限公司 | 一种内存管理方法和装置 |
US20190163524A1 (en) * | 2017-11-30 | 2019-05-30 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for processing task in smart device |
CN108429783A (zh) * | 2018-01-16 | 2018-08-21 | 重庆金融资产交易所有限责任公司 | 电子装置、配置文件推送方法及存储介质 |
CN110750339A (zh) * | 2018-07-23 | 2020-02-04 | 杭州海康威视系统技术有限公司 | 一种线程调度方法、装置及电子设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112817745A (zh) * | 2021-01-14 | 2021-05-18 | 内蒙古蒙商消费金融股份有限公司 | 一种任务处理方法及装置 |
CN114489984A (zh) * | 2022-01-26 | 2022-05-13 | 北京火山引擎科技有限公司 | 任务处理方法、装置、电子设备、存储介质及程序产品 |
CN115185677A (zh) * | 2022-06-24 | 2022-10-14 | 湖南长银五八消费金融股份有限公司 | 业务数据合并总账方法、装置、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111831411B (zh) | 2024-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831410A (zh) | 任务处理方法、装置、存储介质及电子设备 | |
US11941434B2 (en) | Task processing method, processing apparatus, and computer system | |
US9015724B2 (en) | Job dispatching with scheduler record updates containing characteristics combinations of job characteristics | |
CN111831411B (zh) | 任务处理方法、装置、存储介质及电子设备 | |
CN109033814B (zh) | 智能合约触发方法、装置、设备及存储介质 | |
CN110879742A (zh) | 虚拟机异步创建内部快照方法、装置及存储介质 | |
CN111813520A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN111831414A (zh) | 线程迁移方法、装置、存储介质及电子设备 | |
CN116541142A (zh) | 任务调度方法、装置、设备、存储介质及计算机程序产品 | |
CN111679911A (zh) | 云环境中gpu卡的管理方法、装置、设备及介质 | |
CN107977275B (zh) | 基于消息队列的任务处理方法及相关设备 | |
CN115421787A (zh) | 指令执行方法、装置、设备、系统、程序产品及介质 | |
CN111831413A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
CN111475299A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN113495787A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111831436B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111831432B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111444117B (zh) | 存储空间碎片化实现方法、装置、存储介质及电子设备 | |
CN111813541B (zh) | 一种任务调度方法、装置、介质和设备 | |
EP4006725A1 (en) | Virtual machine migration processing and strategy generation method, apparatus and device, and storage medium | |
EP4208775A1 (en) | Disaggregated memory pool assignment | |
US9088569B2 (en) | Managing access to a shared resource using client access credentials | |
CN111831439A (zh) | Io请求的处理方法、装置、存储介质及电子设备 | |
CN111831442A (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 |