线程管理方法、装置、设备及存储介质制造方法及图纸

技术编号:37158405 阅读:14 留言:0更新日期:2023-04-06 22:21
本申请为计算机技术领域,本申请提供了一种线程管理方法、装置、设备及存储介质,其中,所述方法包括:当计算机设备的应用程序启动时,获取应用程序的所有业务,根据每个业务的业务类型创建相对应的优先级,确定计算机设备的CPU核数,根据每个业务的优先级及计算机设备的CPU核数创建相对应数量的线程,并生成每个业务的线程池,响应于目标业务的线程使用需求,确定目标业务的目标优先级,查找与目标业务的目标优先级相匹配的线程池,得到第一线程池,从第一线程池中获取空闲线程,得到目标线程,调用目标线程执行所述目标业务,以充分利用多核CPU的资源创建线程,控制了线程的无序增长,让CPU资源利用在可控范围内最大化。让CPU资源利用在可控范围内最大化。让CPU资源利用在可控范围内最大化。

【技术实现步骤摘要】
线程管理方法、装置、设备及存储介质


[0001]本申请涉及计算机
,具体而言,本申请涉及一种线程管理方法、装置、设备及存储介质。

技术介绍

[0002]现如今,iOS应用软件的开发者多数是直接用GCD(Grand Central Dispatch,是Apple开发的一个多核编程的较新的解决方法,它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统,是一个在线程池模式的基础上执行的并行任务),这个官方框架来直接做异步的线程操作,实现多线程的并行处理任务数据。
[0003]由于开发者对系统默认队列dispatch_get_global_queue使用不当,经常采用默认创建方式,会生成大量的线程,远超CPU负荷,某些业务会因为某些原因被锁住导致线程休眠,或者被阻塞,长时间的阻塞则会引发闪退。应用程序在同一时刻就会存在几十个线程同时运行、创建、销毁,CPU是用时间片轮转来实现线程并发的,尽管能控制线程的优先级,但当大量线程同时创建运行销毁时,这些操作仍然会挤占主线程的CPU资源。

技术实现思路

[0004]本申请的主要目的为提供一种线程管理方法、装置、设备及存储介质,以能够解决当大量线程同时创建运行销毁时,挤占主线程的CPU资源的问题。
[0005]为了实现上述专利技术目的,本申请提供一种线程管理方法,应用于配置有IOS操作系统的计算机设备,包括:
[0006]当计算机设备的应用程序启动时,获取所述应用程序的所有业务;
[0007]根据每个业务的业务类型创建相对应的优先级;
[0008]确定所述计算机设备的CPU核数,根据每个业务的优先级及所述计算机设备的CPU核数创建相对应数量的线程,并生成每个业务的线程池;
[0009]响应于目标业务的线程使用需求,确定所述目标业务的目标优先级,查找与所述目标业务的目标优先级相匹配的线程池,得到第一线程池;
[0010]从所述第一线程池中获取空闲线程,得到目标线程;
[0011]调用所述目标线程执行所述目标业务。
[0012]优选地,所述从所述第一线程池中获取空闲的线程,得到目标线程,包括:
[0013]判断所述第一线程池中是否有空闲线程;
[0014]当判定所述第一线程池中有空闲线程时,将所述第一线程池中的空闲线程作为目标线程。
[0015]进一步地,所述判断所述第一线程池中是否有空闲线程之后,还包括:
[0016]当判定所述第一线程池中没有空闲线程时,则查找所述目标优先级下一个优先级的线程池,得到第二线程池;
[0017]判断所述第二线程池中是否有空闲线程;
[0018]当判定所述第二线程池中有空闲线程时,将所述第二线程池中的空闲线程作为目标线程。
[0019]进一步地,所述判断所述第二线程池中是否有空闲线程之后,还包括:
[0020]当判定所述第二线程池中没有空闲线程时,则继续查找下一个优先级的线程池,直至得到有空闲线程的线程池,并作为目标线程池,将所述目标线程池中的空闲线程作为目标线程。
[0021]进一步地,所述继续查找下一个优先级的线程池之后,还包括:
[0022]当查找到最低优先级的线程池中仍没有空闲线程时,则将所述目标业务加入线程等待队列;其中,所述线程等待队列属于先进先出原则。
[0023]进一步地,所述将所述目标业务加入线程等待队列之后,还包括:
[0024]获取所述应用程序正在执行的其他业务;
[0025]实时监测其他业务的执行情况;
[0026]当监测到任一个其他业务执行完毕,并释放了一个空闲线程时,则通知所述线程等待队列。
[0027]进一步地,所述通知所述线程等待队列之后,还包括:
[0028]根据所述先进先出原则,从所述线程等待队列中释放一个待执行业务,为所述待执行业务分配任一个其他业务所释放的空闲线程。
[0029]本申请还提供一种线程管理装置,应用于配置有IOS操作系统的计算机设备,包括:
[0030]第一获取模块,用于当计算机设备的应用程序启动时,获取所述应用程序的所有业务;
[0031]创建模块,用于根据每个业务的业务类型创建相对应的优先级;
[0032]确定模块,用于确定所述计算机设备的CPU核数,根据每个业务的优先级及所述计算机设备的CPU核数创建相对应数量的线程,并生成每个业务的线程池;
[0033]查找模块,用于响应于目标业务的线程使用需求,确定所述目标业务的目标优先级,查找与所述目标业务的目标优先级相匹配的线程池,得到第一线程池;
[0034]第二获取模块,用于从所述第一线程池中获取空闲线程,得到目标线程;
[0035]调用模块,用于调用所述目标线程执行所述目标业务。
[0036]本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
[0037]本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述任一项所述方法的步骤。
[0038]本申请所提供的一种线程管理方法、装置、设备及存储介质,当计算机设备的应用程序启动时,获取所述应用程序的所有业务,根据每个业务的业务类型创建相对应的优先级,确定所述计算机设备的CPU核数,根据每个业务的优先级及所述计算机设备的CPU核数创建相对应数量的线程,并生成每个业务的线程池,响应于目标业务的线程使用需求,确定所述目标业务的目标优先级,查找与所述目标业务的目标优先级相匹配的线程池,得到第一线程池,从所述第一线程池中获取空闲线程,得到目标线程,调用所述目标线程执行所述目标业务,以充分利用多核CPU的资源创建线程,控制了线程的无序增长,让CPU资源利用在
可控范围内最大化,避免挤占主线程的CPU资源,同时改善了开发者对dispatch_get_global_queue使用不当,而造成线程阻塞引发的闪退现象,也避免了频繁创建和销毁线程而造成额外的内存开销,从而优化了用户体验。
附图说明
[0039]图1为本申请一实施例的线程管理方法的流程示意图;
[0040]图2为本申请一实施例的线程管理装置的结构示意框图;
[0041]图3为本申请一实施例的计算机设备的结构示意框图。
[0042]本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0043]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0044]本申请提出的一种线程管理方法,执行主体为计算机设备,该线程管理方法用于解决由于开发者对系统默认队列dispatch_get_global_queue使用不当,经常采用默认创建方式,会生本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种线程管理方法,应用于配置有I OS操作系统的计算机设备,其特征在于,包括:当计算机设备的应用程序启动时,获取所述应用程序的所有业务;根据每个业务的业务类型创建相对应的优先级;确定所述计算机设备的CPU核数,根据每个业务的优先级及所述计算机设备的CPU核数创建相对应数量的线程,并生成每个业务的线程池;响应于目标业务的线程使用需求,确定所述目标业务的目标优先级,查找与所述目标业务的目标优先级相匹配的线程池,得到第一线程池;从所述第一线程池中获取空闲线程,得到目标线程;调用所述目标线程执行所述目标业务。2.根据权利要求1所述的方法,其特征在于,所述从所述第一线程池中获取空闲的线程,得到目标线程,包括:判断所述第一线程池中是否有空闲线程;当判定所述第一线程池中有空闲线程时,将所述第一线程池中的空闲线程作为目标线程。3.根据权利要求2所述的方法,其特征在于,所述判断所述第一线程池中是否有空闲线程之后,还包括:当判定所述第一线程池中没有空闲线程时,则查找所述目标优先级下一个优先级的线程池,得到第二线程池;判断所述第二线程池中是否有空闲线程;当判定所述第二线程池中有空闲线程时,将所述第二线程池中的空闲线程作为目标线程。4.根据权利要求3所述的方法,其特征在于,所述判断所述第二线程池中是否有空闲线程之后,还包括:当判定所述第二线程池中没有空闲线程时,则继续查找下一个优先级的线程池,直至得到有空闲线程的线程池,并作为目标线程池,将所述目标线程池中的空闲线程作为目标线程。5.根据权利要求4所述的方法,其特征在于,所述继续查找下一个优先级的线程池之后,还包括:当查找到最低优先级的线程池中仍没有空闲线程时,则将所述目标业务加入线程等待队...

【专利技术属性】
技术研发人员:马克李扬
申请(专利权)人:深圳依时货拉拉科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1