一种线程维护方法、装置及电子设备与流程

文档序号:17548178发布日期:2019-04-30 18:00阅读:169来源:国知局
一种线程维护方法、装置及电子设备与流程

本发明涉及系统服务技术领域,特别是涉及一种线程维护方法、装置及电子设备。



背景技术:

系统中的任务可以是分配给系统线程池中的一个线程完成,该线程为完成所获取到的任务,需要占用一定的系统资源,所占用的系统资源在该线程完成该任务后释放。而系统中的资源有限,不同的线程可能均需要占用系统中相同的资源,如果两个线程相互占用了彼此所需要的系统资源,则这两个线程可能均无法获取到完成任务所需要的所有系统资源,因此这两个线程均无法完成获取到的任务,可能会长期占用已经占用的系统资源,而不会进行释放,导致系统资源的浪费,该现象即线程死锁问题。

如果线程池中出现死锁问题,可能导致线程池处理效率下降,整个系统的效率也随之下降。因此如何有效解决线程池死锁问题,成为亟待解决的技术问题。



技术实现要素:

本发明实施例的目的在于提供一种一种线程维护方法,以实现自动解决线程池中出现的死锁问题。具体技术方案如下:

在本发明实施例的第一方面,提供了一种线程维护方法,所述方法包括:

确定待维护线程是否正在执行任务;

如果所述待维护线程正在执行任务,确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长;

如果所述执行时长大于预设时长阈值,控制所述待维护线程终止执行所述任务。

结合第一方面,在第一种可能的实现方式中,所述方法还包括:

在待维护线程获取到任务之后,将所述待维护线程从系统态设置为用户态;

所述确定待维护线程是否正在执行任务,包括:

如果所述待维护线程处于所述用户态,确定所述待维护线程正在执行任务;

或者,如果所述待维护线程处于所述系统态,确定所述待维护线程不在执行任务。

结合第一方面,在第二种可能的实现方式中,所述预设时长阈值与所述待维护线程历史时间段的平均完成时长正相关。

结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,在所述确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长之后,所述方法还包括:

如果所述执行时长不大于预设时长阈值,在所述待维护线程执行完成所述任务之后,将所述待维护线程从所述用户态设置为所述系统态。

在本发明实施例的第二方面,提供了一种线程维护装置,所述装置包括:

状态管理模块,用于确定待维护线程是否正在执行任务;

时长确定模块,用于如果所述待维护线程正在执行任务,确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长;

线程管理模块,用于如果所述执行时长大于预设时长阈值,控制所述待维护线程终止执行所述任务。

结合第二方面,在第一种可能的实现方式,所述状态管理模块还用于在待维护线程获取到任务之后,将所述待维护线程从系统态设置为用户态;

所述状态管理模块具体用于如果所述待维护线程处于所述用户态,确定所述待维护线程正在执行任务;

或者,如果所述待维护线程处于所述系统态,确定所述待维护线程不在执行任务。

结合第二方面,在第二种可能的实现方式中,所述预设时长阈值与所述待维护线程历史时间段的平均完成时长正相关。

结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述状态管理模块还用于在所述确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长之后,如果所述执行时长不大于预设时长阈值,在所述待维护线程执行完成所述任务之后,将所述待维护线程从所述用户态设置为所述系统态。

在本发明实施例的第三方面,提供了一种电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的线程维护方法。

在本发明实施例的第四方面,提供了一种一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的线程维护方法。

本发明实施例提供的线程维护方法、装置及电子设备,可以在执行时长过长时,自动终止待维护线程,以实现自动解决线程池中出现的死锁问题,提供线程池的运行效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的线程维护方法的一种流程示意图;

图2为本发明实施例提供的线程运维过程的一种原理示意图;

图3为本发明实施例提供的线程状态控制方法的一种流程示意图;

图4为本发明实施例提供的线程维护装置的一种结构示意图;

图5为本发明实施例提供的电子设备的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1所示为本发明实施例提供的线程维护方法的一种流程示意图,可以包括:

s101,确定待维护线程是否正在执行任务。

待维护线程可以是线程池中的一个或多个线程,一个待维护线程正在执行任务,可以是指该待维护线程被分配执行一个或多个任务,也可以是指该待维护线程正在占用系统资源,系统资源可以包括内存资源、外部存储器资源、输入设备资源等。可以理解的是,一个待维护线程如果正在执行任务,则该线程需要占用一定的系统资源。示例性的,假设一个线程需要执行打印任务,则该线程需要占用打印机资源。

在一种可选的实施例中,可以是对待维护线程的状态进行监控,示例性的,可以是在待维护线程获取到任务之后,将待维护线程设置从系统(system)态设置为用户(user)态,在待维护线程执行完成所有获取到的任务后,将待维护线程从用户态设置为系统态,则可以通过确定待维护线程所处的状态确定待维护线程是否正在执行任务。当待维护线程处于用户态时,可以确定待维护线程正在执行任务,当待维护线程处于系统态时,可以确定待维护线程没有正在执行任务。进一步的,处于系统态的待维护线程可以调用执行系统内核的代码,而处于用户态的待维护线程可以调用执行用户定义的应用程序的代码。

s102,确定当前时刻距离待维护线程获取到正在执行的任务的时刻的时长作为执行时长。

当前时刻是指对待维护线程进行维护的时刻,在本实施例中,可以是根据用户的实际需求,定期或者不定期地对待维护线程进行维护。示例性的,可以是在接收到用户输入的维护指令后,对待维护线程进行维护,也可以是每间隔预设周期,对待维护线程进行维护,预设周期设置的越短,则及时解决待维护线程死锁问题的可能性越高,但维护成本可能也越高,预设周期设置的越长,则维护成本可能越低,但是及时解决待维护线程死锁为题的可能性越低。

可以是预先针对所有线程设置有全局定时器(其他可选的实施例中也可以是延时器),每当该全局定时器的计数达到预设计数值时,对所有线程进行维护,并重置该全局定时器。示例性的,假设全局定时器的初始计数为60,每毫秒计数减1,当全局定时器的计数为0时,对所有线程进行维护,并将全局定时器的计数重置为60。

也可以是在待维护线程获取到任务后,针对待维护线程设置局部定时器,每当该局部定时器的计数达到预设计数值时,对该待维护线程进行维护,并重置该局部定时器。示例性的,在待维护线程获取到任务后,针对该待维护线程,设置初始计数为60,每毫秒计数减1的局部定时器,当该局部定时器的计数为0时,对该待维护线程进行维护,并将该局部定时器的计数重置为60。针对不同的待维护线程,所设置的局部定时器的参数可以不同。例如,对于较为重要的待维护线程,可以将定时器的初始计数设置的较低,以提高对这些待维护线程进行维护的频率,对于较为不重要的待维护线程,可以将定时器的初始计数设置的较高,以降低对这些待维护线程进行维护的频率。

在一种可选的实施例中,局部定时器的初始计数还可以与预设时长阈值相关,示例性的,假设预设时长阈值为200ms,局部定时器可以是初始计数为200,每毫秒计数减1的局部定时器,当该局部定时器的计数为0时,对该待维护线程进行维护,这样可以使得在第一次对该待维护线程进行维护时,直接确定执行时长已经大于预设时长阈值。

s103,如果执行时长大于预设时长阈值,控制待维护线程终止执行任务。

预设时长阈值可以是由用户根据实际经验或者实际需求设置的一个值,在一种可选的实施例中,也可以是通过统计待维护线程历史时间段的平均完成时长确定的一个值,示例性的,统计待维护线程在历史某一时间段,如7月1号一天内,执行过的所有任务的完成时长,将均值作为待维护线程的平均完成时长,该平均完成时长越长,则可以将预设时长阈值设置的越长。

可以理解的是,不同的线程因为运行环境和实际需求的不同,执行完成一个任务的平均完成时长可能不一致,例如线程a获取到的任务可能复杂度较低,平均完成时长可以是100ms,而线程b获取到的任务可能复杂度较高,平均完成时长可能为200ms,因此如果线程a的执行时长为200ms,可以表示线程a已经花费了2倍于平均完成时长的时间仍然没有完成正在执行的任务,说明线程a很可能出现了死锁问题。而如果线程b的执行时长为200ms,由于线程b的平均完成时长为200ms,因此线程b可能处于正常波动中,线程b出现死锁的概率较低。选用该实施例,可以根据待维护线程的平均完成时长,自适应地确定预设时长阈值,使得能够更准确地发现待维护线程是否出现死锁问题。

在控制待维护线程终止执行任务之后,待维护线程会释放执行任务所占用的系统资源,这些系统资源被释放后,与待维护线程相互死锁的线程可以正常调用这些系统资源,因此与待维护线程相互死锁的线程的死锁问题也相应解决。故选用该实施例,可以有效解决资源池中线程相互死锁的问题,以提高线程池的运行效率。

为更清楚的本发明实施例提供的线程维护方法进行描述,下面将结合线程维护与线程执行任务的过程,对本发明实施例进行说明,参见图2,可以包括:

s201,在待维护线程获取到任务之后,将待维护线程从系统态设置为用户态。

在本实施例中,待维护线程在没有执行任务时是处于系统态的。或者,待维护线程在等待任务分配时是处于系统态的。待维护线程进入用户态后,开始执行获取到的任务,执行任务时的业务逻辑根据任务的不同和/或用户相关设置的不同可以不同,本实施例对此不作限制。

s202,确定待维护线程是否处于用户态。

如果待在执行s202之前,维护线程已经完成所执行的任务,则待维护线程处于系统态,如果在执行s202时,维护线程尚未执行完成所执行的任务,则待维护线程处于用户态。

s203,如果待维护线程处于用户态,确定当前时刻距离待维护线程获取到正在执行的任务的时刻的时长作为执行时长。

示例性的,可以是在执行s201生成一个时间戳作为第一时间戳,在s203时获取第一时间戳,确定执行s203的时刻与第一时间戳所表示的时间之间的时间差,并将该时间差作为执行时长。也可以是执行s201时同步生成一个计时器,并在s203时读取该计数器的读数,以确定执行时长。

s204,确定执行时长是否大于预设时长阈值,如果执行时长大于预设时长阈值,则执行s205,如果待执行时长不大于预设时长阈值,则执行s202。

可以是在执行完成s204,并且确定待执行时长不大于预设时长阈值之后,立即执行s202。也可以是在执行完成s204,并且确定待执行时长不大于预设时长阈值之后,等待当前时刻距离上次执行s202一定时间段后,再执行s202,示例性的,假设上次执行s202的时刻为t=100ms,则可以是在距离该时刻200ms后,即t=300ms时刻,再执行s202。

s205,控制待维护线程终止执行任务。

该步骤与s103相同,可以参见前述关于s103的描述,在此不再赘述。

参见图3,图3所述为本发实施例提供的线程所处状态控制方法的一种流程示意图,可以包括:

s301,在待维护线程获取到任务之后,将待维护线程从系统态设置为用户态。

s302,如果待维护线程被控制终止执行任务,将待维护线程从用户态设置为系统态。

s303,如果待维护线程没有被控制执行任务,在待维护线程执行完成任务后,将待维护线程从用户态设置为系统态。

选用该实施例对待维护线程所处的状态进行控制,可以保证待维护线程在执行任务时处于用户态,在没有执行任务时处于系统态。以使得可以根据待维护线程所处的状态,准确地确定出待维护线程是否正在执行任务。

参见图4,图4所示为本发明实施例提供的线程维护装置的一种结构示意图,可以包括:

状态管理模块401,用于确定待维护线程是否正在执行任务;

时长确定模块402,用于如果所述待维护线程正在执行任务,确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长;

线程管理模块403,用于如果所述执行时长大于预设时长阈值,控制所述待维护线程终止执行所述任务。

进一步的,所述状态管理模块401还用于在待维护线程获取到任务之后,将所述待维护线程从系统态设置为用户态;

所述状态管理模块具体用于如果所述待维护线程处于所述用户态,确定所述待维护线程正在执行任务;

或者,如果所述待维护线程处于所述系统态,确定所述待维护线程不在执行任务。

进一步的,所述时长确定模块402具体用于获取所述待维护线程被设置为所述用户态时的时间戳作为第一时间戳;

确定当前时刻与所述第一时间戳所表示的时间之间的时间差作为执行时长。

进一步的,所述预设时长阈值与所述待维护线程历史时间段的平均完成时长正相关。

进一步的,所述状态管理模块401还用于在所述确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长之后,如果所述执行时长不大于预设时长阈值,在所述待维护线程执行完成所述任务之后,将所述待维护线程从所述用户态设置为所述系统态。

本发明实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,

存储器503,用于存放计算机程序;

处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:

确定待维护线程是否正在执行任务;

如果所述待维护线程正在执行任务,确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长;

如果所述执行时长大于预设时长阈值,控制所述待维护线程终止执行所述任务。

进一步的,所述方法还包括:

在待维护线程获取到任务之后,将所述待维护线程从系统态设置为用户态;

所述确定待维护线程是否正在执行任务,包括:

如果所述待维护线程处于所述用户态,确定所述待维护线程正在执行任务;

或者,如果所述待维护线程处于所述系统态,确定所述待维护线程不在执行任务。

进一步的,所述确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长,包括:

获取所述待维护线程被设置为所述用户态时的时间戳作为第一时间戳;

确定当前时刻与所述第一时间戳所表示的时间之间的时间差作为执行时长。

进一步的,所述预设时长阈值与所述待维护线程历史时间段的平均完成时长正相关。

进一步的,在所述确定当前时刻距离所述待维护线程获取到正在执行的任务的时刻的时长作为执行时长之后,所述方法还包括:

如果所述执行时长不大于预设时长阈值,在所述待维护线程执行完成所述任务之后,将所述待维护线程从所述用户态设置为所述系统态。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一线程维护方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一线程维护方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1