一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

线程处理方法及装置、电子设备、计算机可读存储介质与流程

2022-02-18 22:54:15 来源:中国专利 TAG:

线程处理方法及装置、电子设备、计算机可读存储介质
【技术领域】
1.本发明涉及计算机技术领域,尤其涉及一种线程处理方法及装置、电子设备、计算机可读存储介质。


背景技术:

2.在电子设备中,其进程内可以并发多个线程,每条线程作为运算调度的最小单位,可归属于不同的应用,并行执行不同的任务。电子设备在工作过程中,可能将线程设置为“非可执行”状态,以暂停线程的运行,这一行为即为线程的挂起。
3.然而,线程的挂起具有时长的限制。从发起线程挂起开始计时,一旦超过限制的时长仍未能将线程挂起,即线程挂起超时,此时,可确定线程挂起失败。线程挂起失败会引起进程的崩溃,进而导致应用的崩溃,影响用户的使用体验。
4.因此,如何减少因线程挂起失败导致的应用崩溃,成为目前亟待解决的技术问题。


技术实现要素:

5.本发明实施例提供了一种线程处理方法及装置、电子设备计算机可读存储介质,旨在解决相关技术中线程挂起失败导致用户体验低下的技术问题。
6.第一方面,本发明实施例提供了一种线程处理方法,包括:获取针对进程中的线程的挂起请求;基于所述挂起请求,启动计时器;当所述计时器超时时所述线程仍未挂起成功,识别所述线程的挂起时间限制标识,所述挂起时间限制标识是基于线程所属主体的实时进程状态和/或所述线程所属主体中发生的指定执行流程确定的;在所述线程的挂起时间限制标识为第一标识的情况下,重启所述计时器;在所述线程的挂起时间限制标识为第二标识的情况下,确定所述线程挂起失败,其中,所述第一标识用于指示可重启计时,所述第二标识用于指示不可重启计时。
7.在本发明上述实施例中,可选地,还包括:延长所述计时器的计时时长。
8.在本发明上述实施例中,可选地,所述延长所述计时器的计时时长的步骤,包括:将所述计时器的计时时长延长至指定时长,或者将所述计时器的计时时长延长至自身的指定倍数。
9.在本发明上述实施例中,可选地,所述延长所述计时器的计时时长的步骤,包括:通过第一hook函数替换第一函数;调用所述第一hook函数延长所述计时器的计时时长;所述方法还包括:调用所述第一函数判断当所述计时器超过经所述第一hook函数延长后的计时时长时所述线程是否已挂起成功。
10.在本发明上述实施例中,可选地,还包括:获取所述线程所属主体的更新后的实时进程状态,以基于所述更新后的实时进程状态确定所述线程的所述挂起时间限制标识。
11.在本发明上述实施例中,可选地,还包括:以第二hook函数替换第二函数,所述第二函数用于更新所述线程所属主体的实时进程状态;所述方法还包括:调用所述第二hook函数获取所述线程所属主体的更新后的实时进程状态,以基于所述更新后的实时进程状态
确定所述线程的所述挂起时间限制标识。
12.在本发明上述实施例中,可选地,还包括:检测所述指定执行流程是否发生,以基于所述指定执行流程的发生确定所述线程的所述挂起时间限制标识。
13.在本发明上述实施例中,可选地,还包括:以第三hook函数替换第三函数,所述第三函数用于执行指定执行流程;所述方法还包括:调用所述第三hook函数检测所述指定执行流程是否发生。
14.在本发明上述实施例中,可选地,确定所述线程的所述挂起时间限制标识的方式,包括:响应于所述指定执行流程的发生,设置所述线程的所述挂起时间限制标识为所述第一标识。
15.第二方面,本发明实施例提供了一种线程处理装置,包括:挂起请求获取单元,用于获取针对进程中的线程的挂起请求;计时单元,用于基于所述挂起请求,启动计时器;标识识别单元,用于当所述计时器超时时所述线程仍未挂起成功,识别所述线程的挂起时间限制标识,所述挂起时间限制标识是基于线程所属主体的实时进程状态和/或所述线程所属主体中发生的指定执行流程确定的;第一执行单元,用于在所述线程的挂起时间限制标识为第一标识的情况下,重启所述计时器;第二执行单元,用于在所述线程的挂起时间限制标识为第二标识的情况下,确定所述线程挂起失败,其中,所述第一标识用于指示可重启计时,所述第二标识用于指示不可重启计时。
16.在本发明上述实施例中,可选地,还包括:计时器延时单元,用于延长所述计时器的计时时长。
17.在本发明上述实施例中,可选地,所述计时器延时单元用于:将所述计时器的计时时长延长至指定时长,或者将所述计时器的计时时长延长至自身的指定倍数。
18.在本发明上述实施例中,可选地,还包括:第一初始设置单元,用于通过第一hook函数替换第一函数;调用所述第一hook函数延长所述计时器的计时时长;线程处理装置还包括:挂起判断单元,用于调用所述第一函数判断当所述计时器超过经所述第一hook函数延长后的计时时长时所述线程是否已挂起成功。
19.在本发明上述实施例中,可选地,还包括:实时进程状态获取单元,用于获取所述线程所属主体的更新后的实时进程状态,以基于所述更新后的实时进程状态确定所述线程的所述挂起时间限制标识。
20.在本发明上述实施例中,可选地,还包括:第二初始设置单元,用于以第二hook函数替换第二函数,所述第二函数用于更新所述线程所属主体的实时进程状态;所述实时进程状态获取单元用于:调用所述第二hook函数获取所述线程所属主体的更新后的实时进程状态,以基于所述更新后的实时进程状态确定所述线程的所述挂起时间限制标识。
21.在本发明上述实施例中,可选地,还包括:指定流程检测单元,用于检测所述指定执行流程是否发生,以基于所述指定执行流程的发生确定所述线程的所述挂起时间限制标识。
22.在本发明上述实施例中,可选地,还包括:第三初始设置单元,用于以第三hook函数替换第三函数,所述第三函数用于执行指定执行流程;所述指定流程检测单元用于:调用所述第三hook函数检测所述指定执行流程是否发生。
23.在本发明上述实施例中,可选地,所述标识识别单元用于:响应于所述指定执行流
程的发生,设置所述线程的所述挂起时间限制标识为所述第一标识。
24.第三方面,本发明实施例提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行上述第一方面中任一项所述的方法。
25.第四方面,本发明实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述第一方面中任一项所述的方法流程。
26.终端或虚拟机等主体在运行过程中,其进程可以并发多个线程,每个线程可归属于不同的应用,执行自身对应的任务。此时,可接收对任一线程的挂起请求,该挂起请求用于请求将该线程设置为不可执行状态,以暂停该线程的运行。
27.线程本身对应有最大挂起时长,最大挂起时长为线程挂起成功所能消耗的最大时长,一旦对线程的实时挂起时长超过最大挂起时长,线程挂起超时,则确定线程挂起失败。基于此,一般将该最大挂起时长设置为计时器的计时时长,启动计时器,对线程的实时挂起时长进行计时,以便基于计时器的计时是否超过最大挂起时长来判断线程挂起是否成功。
28.接着,判断所述计时器超时时所述线程是否仍未挂起成功,若挂起成功,则结束进程,若挂起不成功,则进一步识别线程的挂起时间限制标识。换言之,即判断线程的实时挂起时长小于或等于线程自身的最大挂起时长的情况下,线程是否挂起成功,若成功,则结束进程,若不成功,则进一步识别线程的挂起时间限制标识。
29.线程的挂起时间限制标识由线程所属主体的实时进程状态和/或所述线程所属主体中发生的指定执行流程决定,用于指示线程的挂起时间是否可延长。其中,线程的挂起时间限制标识包括第一标识和第二标识,第一标识用于指示可重启计时,第二标识用于指示不可重启计时。
30.具体地,可重启计时的情况下,线程具有足够的时间继续执行挂起动作,不可重启计时的情况下,线程不具有足够的时间继续执行挂起动作。因此,在所述线程的挂起时间限制标识为第一标识的情况下,可重新启动计时器,在新一轮计时中再次判断线程的实时挂起时长小于或等于线程自身的最大挂起时长的情况下,线程是否挂起成功。只有在所述线程的挂起时间限制标识为第二标识的情况下,才确定所述线程挂起失败。
31.在相关技术中,对线程发起挂起请求后,若线程首次挂起失败,会引起进程的崩溃,进而导致应用的崩溃,影响用户的使用体验。而在上述技术方案中,在线程首次挂起失败后,并不直接确定线程挂起失败,而是增加了对线程的挂起时间限制标识的识别,从而在线程的挂起时间限制标识为第一标识的情况下至少可重启计时一次,并在重启计时期间持续对线程进行挂起操作。
32.由此,相对于相关技术的技术方案,增加了线程挂起可用的时间,减少了线程挂起失败的可能性,提升了线程挂起的成功率,从而减少因线程挂起失败导致的进程崩溃的发生概率。进程崩溃的发生概率的降低使得应用的运行更具稳定性和可靠性,从而减少了应用崩溃现象,提升了用户对应用的使用体验。
【附图说明】
33.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域
普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
34.图1示出了根据本发明的一个实施例的线程处理方法的流程图;
35.图2示出了根据本发明的另一个实施例的线程处理方法的流程图;
36.图3示出了根据本发明的一个实施例的延长计时器的计时时长的流程图;
37.图4示出了根据本发明的一个实施例的虚拟机初始设置的流程图;
38.图5示出了根据本发明的一个实施例的线程处理装置的框图;
39.图6示出了根据本发明的一个实施例的电子设备的框图。
【具体实施方式】
40.为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
41.应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
42.在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
43.线程挂起失败会引起进程的崩溃,进而导致应用的崩溃,影响用户的使用体验,对此,本技术通过延长计时器时长来为线程提供更长的挂起时间,以获得更多的挂起机会,从而提升线程挂起的成功率。需要知晓,本技术的所有实施例的应用主体包括但不限于终端或虚拟机等,还可以是任何具有线程挂起功能的主体。
44.实施例一
45.图1示出了根据本发明的一个实施例的线程处理方法的流程图。
46.如图1所示,根据本发明的一个实施例的线程处理方法的流程包括:
47.步骤102,获取针对进程中的线程的挂起请求。
48.进程中可以并发多个线程,每个线程可归属于不同的应用,执行自身对应的任务。此时,可接收对任一线程的挂起请求,该挂起请求用于请求将该线程设置为不可执行状态,以暂停该线程的运行。
49.步骤104,基于所述挂起请求,启动计时器。
50.线程本身对应有最大挂起时长,最大挂起时长为线程挂起成功所能消耗的最大时长,一旦对线程的实时挂起时长超过最大挂起时长,线程挂起超时,则确定线程挂起失败。基于此,一般将该最大挂起时长设置为计时器的计时时长,启动计时器,对线程的实时挂起时长进行计时,以便基于计时器的计时是否超过最大挂起时长来判断线程挂起是否成功。
51.步骤106,当所述计时器超时时所述线程仍未挂起成功,识别所述线程的挂起时间限制标识,所述挂起时间限制标识是基于线程所属主体的实时进程状态和/或所述线程所属主体中发生的指定执行流程确定的。
52.接着,判断所述计时器超时时所述线程是否仍未挂起成功,若挂起成功,则结束进程,若挂起不成功,则进一步识别线程的挂起时间限制标识。
53.步骤108,在所述线程的挂起时间限制标识为第一标识的情况下,重启所述计时
器。
54.步骤110,在所述线程的挂起时间限制标识为第二标识的情况下,确定所述线程挂起失败。
55.其中,所述第一标识用于指示可重启计时,所述第二标识用于指示不可重启计时。
56.线程的挂起时间限制标识由线程所属主体的实时进程状态和/或所述线程所属主体中发生的指定执行流程决定,用于指示线程的挂起时间是否可延长。其中,线程的挂起时间限制标识包括第一标识和第二标识,第一标识用于指示可重启计时,第二标识用于指示不可重启计时。
57.具体地,可重启计时的情况下,线程具有足够的时间继续执行挂起动作,不可重启计时的情况下,线程不具有足够的时间继续执行挂起动作。因此,在所述线程的挂起时间限制标识为第一标识的情况下,可重新启动计时器,在新一轮计时中再次判断线程的实时挂起时长小于或等于线程自身的最大挂起时长的情况下,线程是否挂起成功。只有在所述线程的挂起时间限制标识为第二标识的情况下,才确定所述线程挂起失败。
58.在一种可能的设计中,可仅执行一次计时器的重启。
59.在另一种可能的设计中,可循环重启定时器,并在线程成功挂起、或循环次数达到指定的最高循环次数、挂起动作总次数达到指定最高动作次数的情况下,停止循环。
60.在一种可能的设计中,参照图2所示,循环重启计时器直至线程成功挂起的过程包括:
61.步骤202,获取针对进程中的线程的挂起请求。
62.步骤204,基于所述挂起请求,启动对所述线程的实时挂起时长的计时。
63.步骤206,判断所述线程是否在所述实时挂起时长小于或等于所述线程自身的最大挂起时长的期间挂起成功,在判断结果为否时,进入步骤208,在判断结果为是时,确定线程挂起成功,结束进程。
64.判断线程的实时挂起时长小于或等于线程自身的最大挂起时长的情况下,线程是否挂起成功。若成功,结束进程,若不成功,进一步识别线程的挂起时间限制标识。
65.步骤208,识别所述线程的挂起时间限制标识,所述挂起时间限制标识是基于线程所属主体的实时进程状态和/或所述线程所属主体中发生的指定执行流程确定的。
66.其中,在所述线程的挂起时间限制标识为第一标识的情况下,返回步骤204,进入重启计时循环,直至所述线程在所述实时挂起时长小于或等于所述线程自身的最大挂起时长的期间挂起成功为止。在所述线程的挂起时间限制标识为第二标识的情况下,进入步骤210。
67.步骤210,确定所述线程挂起失败。
68.在相关技术中,对线程发起挂起请求后,若线程首次挂起失败,会引起进程的崩溃,进而导致应用的崩溃,影响用户的使用体验。而在上述技术方案中,在线程首次挂起失败后,并不直接确定线程挂起失败,而是增加了对线程的挂起时间限制标识的识别,从而在线程的挂起时间限制标识为第一标识的情况下至少可重启计时一次,并在重启计时期间持续对线程进行挂起操作。
69.综上,本技术相对于相关技术的技术方案,增加了线程挂起可用的时间,减少了线程挂起失败的可能性,提升了线程挂起的成功率,从而减少因线程挂起失败导致的进程崩
溃的发生概率。进程崩溃的发生概率的降低使得应用的运行更具稳定性和可靠性,从而减少了应用崩溃现象,提升了用户对应用的使用体验。
70.实施例二
71.在实施例一的基础上,还可在初始设置过程中延长计时器的时长。也就是说,先将计时器的计时时长进行延长,再使用延长后的该计时时长判断计时器超时时线程是否仍未挂起成功。
72.延长计时器的计时时长已为线程挂起提供了更多的可消耗时间和挂起成功的机会,而使用延长后的计时时长的情况下,若计时器超时时线程仍未挂起成功,可重启计时器至少一次,以再次延长线程挂起的时间,可进一步为线程挂起提供了更多的可消耗时间和挂起成功的机会,为线程成功挂起提供了双重保障。
73.在一种可能的设计中,延长计时器的计时时长的方式为将所述计时器的计时时长延长至指定时长。比如,计时器的计时时长为30s,即线程挂起所能够消耗的最大挂起时长为30s,那么,可将计时器的计时时长直接延长至50s,使得线程挂起所能够消耗的最大挂起时长延长为50s。
74.在另一种可能的设计中,将所述计时器的计时时长延长至自身的指定倍数。比如,计时器的计时时长为30s,即线程挂起所能够消耗的最大挂起时长为30s,那么,设置指定倍数为3倍,可将计时器的计时时长直接延长至90s,即线程挂起所能够消耗的最大挂起时长延长为90s。
75.当然,延长计时器的计时时长的方式,包括但不限于上述两种策略,还可以是任何能够使计时器的计时时长增加的策略。
76.参照图3所示,在再一种可能的设计中,延长计时器的计时时长的方式包括:
77.步骤302,通过第一hook函数替换第一函数。
78.步骤304,调用所述第一hook函数延长所述计时器的计时时长。
79.在虚拟机或终端中可查找用于判断计时器超时时所述线程是否挂起成功的第一函数,其中,虚拟机的第一函数存储于虚拟机的动态库中。换言之,第一函数用于判断所述线程是否在所述实时挂起时长小于或等于所述线程自身的最大挂起时长的期间挂起成功,所述第一函数对应的所述线程自身的最大挂起时长为第一时长。
80.第一hook函数对应的线程自身的最大挂起时长为第二时长,第二时长大于第一时长。由此,通过第一hook函数替换第一函数后,计时器原本的计时时长(即第一时长)就被延长为了第一hook函数对应的第二时长,实现了计时器的计时时长的延长。在通过上述初始设置完成了计时器的计时时长的延长后,可重新调用第一函数,判断线程是否在所述实时挂起时长小于或等于第二时长的期间挂起成功。
81.由此,计时器的计时时长的延长增加了线程挂起可用的时间,减少了线程挂起失败的可能性,提升了线程挂起的成功率,从而减少因线程挂起失败导致的进程崩溃的发生概率,使得应用的运行更具稳定性和可靠性。
82.在另一种可能的设计中,可设置第一hook函数与第一函数具有相同的判断功能,即判断线程是否在所述实时挂起时长小于或等于自身的最大挂起时长的期间挂起成功。那么,在通过第一hook函数延长计时器的计时时长,也就是线程自身的最大挂起时长至第二时长后,可直接调用第一hook函数判断线程是否在所述实时挂起时长小于或等于第二时长
的期间挂起成功。
83.通过对线程的最大挂起时长的延长,可为线程的挂起动作提供更多的时间,降低了对挂起超时的限制,为实现线程成功挂起提供了更多便利,从而减少了线程挂失失败导致的进程崩溃乃至应用崩溃的情况的发生,提升了用户体验。
84.在上述技术方案中,在延长线程挂起的最大挂起时长的同时,可循环挂起动作,双管齐下地为线程挂起成功提供了保障。
85.实施例三
86.在实施例一和实施例二的基础上,可灵活设置线程的挂起时间限制标识其中,可获取线程所属主体的更新后的实时进程状态,以基于所述更新后的实时进程状态确定所述线程的所述挂起时间限制标识。
87.在一种可能的设计中,虚拟机或终端等主体中存储有第二函数,其中,虚拟机的第二函数存储于虚拟机的动态库中。基于此,获取所述线程所属主体的更新后的实时进程状态的方式包括:在初始配置过程中,以第二hook函数替换第二函数。其中,所述第二函数用于更新所述线程所属主体的实时进程状态,第二hook函数用于获取线程所属主体的更新后的实时进程状态,在以第二hook函数替换第二函数后,第二hook函数即可在检测到线程所属主体的实时进程状态发生更新时获取其更新后的实时进程状态。接着,可基于所述更新后的实时进程状态确定所述线程的所述挂起时间限制标识。
88.线程所属主体的不同实时进程状态分别对应各自的挂起时间限制标识,因此,当线程所属主体的实时进程状态发生更新时,将原实时进程状态对应的挂起时间限制标识替换为更新后的实时进程状态对应的挂起时间限制标识。因此,需要对线程所属主体的实时进程状态的更新进行监控,一旦发生更新,就将当前的挂起时间限制标识替换为更新后的实时进程状态对应的挂起时间限制标识。
89.线程所属主体的实时进程状态包括但不限于cpu超负荷工作状态、cpu未超负荷工作状态、当前线程的实时运行状态等,其中,当前线程的实时运行状态包括前台运行状态和后台运行状态。
90.实时进程状态的更新指的是由一种实时进程状态切换至另一种实时进程状态。比如,从cpu超负荷工作状态切换至cpu未超负荷工作状态,或者,从前台运行状态切换至后台运行状态。
91.各种实时进程状态各自预设有对应的挂起时间限制标识,每当实时进程状态发生更新,可设置挂起时间限制标识为更新后的实时进程状态所对应的预设的挂起时间限制标识。
92.线程的挂起时间限制标识包括第一标识和第二标识,所述第一标识用于指示可重启计时,所述第二标识用于指示不可重启计时。其中,可重启计时的情况下,线程具有足够的时间继续执行挂起动作,不可重启计时的情况下,线程不具有足够的时间继续执行挂起动作。
93.在一种可能的设计中,在实时进程状态由前台运行状态更新至后台运行状态时,设置所述线程的所述挂起时间限制标识为所述第一标识;在实时进程状态为后台运行状态更新至前台运行状态时,设置所述线程的所述挂起时间限制标识为所述第二标识。
94.线程在后台运行时,其不断执行挂起动作,一般不会影响运行在前台的线程,也就
不会影响用户的使用。因此,可预设后台运行状态对应的挂起时间限制标识为所述第一标识,在虚拟机的实时进程状态更新为后台运行状态时,将线程的挂起时间限制标识修改为第一标识,提升了后台线程挂起成功的概率,有助于减少进程崩溃乃至应用崩溃的情况,提升了用户体验。
95.反之,线程在前台运行时,若不断执行挂起动作,会影响用户的使用,因此,可预设前台运行状态对应的挂起时间限制标识为第二标识。
96.在一种可能的设计中,第二hook函数在用于获取线程所属主体的更新后的实时进程状态的同时,也具有第二函数的更新所述线程所属主体的实时进程状态的功能。此时,可调用第二hook函数更新所述线程所属主体的实时进程状态,接着,再调用第二hook函数获取线程所属主体的更新后的实时进程状态,以根据该更新后的实时进程状态确定挂起时间限制标识。
97.实施例四
98.在实施例一和实施例二的基础上,灵活设置线程的挂起时间限制标识的方式不限于实施例三所述的方式,还可为检测所述指定执行流程是否发生的方式,基于所述指定执行流程的发生来确定所述线程的所述挂起时间限制标识。其中,具体地,可响应于虚拟机中指定执行流程的发生,设置所述线程的所述挂起时间限制标识为所述第一标识。也就是说,一旦发生指定执行流程,就将线程的所述挂起时间限制标识设置可重启计时。
99.比如,在应用发生无响应情况后,会输出堆栈信息,对此,可将应用无响应导致的堆栈信息输出步骤设置为指定执行流程。则一旦发生应用无响应导致的堆栈信息输出,说明线程挂起动作可能因应用无响应而挂起不成功,此时,可将线程的所述挂起时间限制标识设置可重启计时,循环线程挂起动作,从而提升了线程成功挂起的可能性。
100.当然,指定执行流程包括但不限于应用无响应导致的堆栈信息输出这一流程,还可包括执行垃圾回收、处理系统信号和压缩堆空间等任何虚拟机可以执行的流程。
101.在一种可能的设计中,检测所述指定执行流程是否发生的方式对应的初始设置步骤为:以第三hook函数替换第三函数。第三函数用于执行指定执行流程,第三hook函数用于检测所述指定执行流程是否发生。其中,虚拟机或终端等主体中存储有第三函数,例如,虚拟机的第三函数存储于虚拟机的动态库中。
102.基于此,每当指定执行流程被执行,第三hook函数即可检测到指定执行流程的发生。接着,指定执行流程一旦发生,即设置所述线程的所述挂起时间限制标识为所述第一标识。也就是说,一旦发生指定执行流程,就将线程的所述挂起时间限制标识设置可重启计时。
103.在一种可能的设计中,第三hook函数在用于检测所述指定执行流程是否发生的同时,也具有第三函数的执行指定执行流程的功能。此时,可调用第三hook函数执行指定执行流程后,通过第三hook函数自身确定指定执行流程发生,最终响应于指定执行流程发生,确定挂起时间限制标识为第一标识。
104.实施例五
105.在实施例三和实施例四的基础上,可将实时进程状态的更新以及指定执行流程的发生联合作为设置挂起时间限制标识的条件。
106.在检测到实时进程状态发生更新和虚拟机中发生指定执行流程两者中的任一项
时,即触发对挂起时间限制标识的设置。由此,最大限度地提升了线程挂起成功的可能性。
107.实施例六
108.上述各实施例所述的对线程所属主体的初始配置步骤可统一进行,以线程所属主体为虚拟机为例,如图4所示,根据本发明的一个实施例的虚拟机初始设置的流程包括:
109.步骤402,在虚拟机的动态库中查找需要进行hook的原始函数。
110.虚拟机的动态库中存储有执行虚拟机的各种功能的原始函数。需要进行hook的原始函数为与线程挂起动作相关的函数,包括等待虚拟机所有线程完成挂起请求的函数(第一函数)、虚拟机更新进程状态的函数(第二函数)和虚拟机在发起挂起请求前的特定执行流程对应的函数(第三函数)。
111.步骤402,保存需要进行hook的原始函数。
112.需要进行hook的原始函数在虚拟机的后续工作中还具有被调用的可能性,因此,将其进行单独保存,以便在虚拟机的后续工作中调用。
113.步骤406,将需要进行hook的原始函数替换为hook函数。
114.hook指的是代理,在完成单独保存后,即可在需要进行hook的原始函数的原位置,将需要进行hook的原始函数代理设置为hook函数。
115.其中,等待虚拟机所有线程完成挂起请求的函数(第一函数)、虚拟机更新进程状态的函数(第二函数)和虚拟机在发起挂起请求前的特定执行流程对应的函数(第三函数)分别被替换为自行实现的等待虚拟机所有线程完成挂起请求的函数(第一hook函数)、自行实现的虚拟机更新进程状态的函数(第二hook函数)和自行实现的虚拟机在发起挂起请求前的特定执行流程对应的函数(第三hook函数)。
116.集合上述多个实施例可知,hook函数相对于原始函数,在其原有功能的基础上,增加了新的功能,从而相配合提升线程挂起成功的可能性。
117.其中,虚拟机在发起挂起请求前的特定执行流程对应的函数包括但不限于:虚拟机执行垃圾回收的函数、虚拟机处理系统信号的函数和虚拟机压缩堆空间的函数。
118.通过本技术方案的初始配置,使得虚拟机在线程首次挂起失败时具有了识别线程的挂起时间限制标识的能力,从而可在识别线程的挂起时间限制标识为第一标识的情况下,循环执行挂起操作。由此,提升了线程挂起的成功率,减少了线程挂起失败的可能性,从而减少因线程挂起失败导致的进程崩溃的发生概率。进程崩溃的发生概率的降低使得虚拟机中应用的运行更具稳定性和可靠性,从而减少了应用崩溃现象,提升了用户对应用的使用体验。
119.需要补充的是,在一种可能的设计中,可设置闭环循环,即循环进行计时和挂起动作直至线程挂起成功为止。由此,最大限度地提升了线程挂起成功的可能性。
120.在另一种可能的设计中,可设置指定循环次数,在实际循环次数低于或等于指定循环次数的情况下,重复进行计时和挂起动作,在此期间,若线程挂起成功,则停止循环。若直至指定循环次数中的最高次数,线程挂起仍未成功,则停止循环,确定线程挂起失败。由此,可避免大量的线程挂起操作消耗过多系统资源。
121.图5示出了根据本发明的一个实施例的线程处理装置的框图。
122.如图5所示,根据本发明的一个实施例的线程处理装置500,包括:挂起请求获取单元502,用于获取针对进程中的线程的挂起请求;计时单元504,用于基于所述挂起请求,启
动计时器;标识识别单元506,用于当所述计时器超时时所述线程仍未挂起成功,识别所述线程的挂起时间限制标识,所述挂起时间限制标识是基于线程所属主体的实时进程状态和/或所述线程所属主体中发生的指定执行流程确定的;第一执行单元508,用于在所述线程的挂起时间限制标识为第一标识的情况下,重启所述计时器;第二执行单元510,用于在所述线程的挂起时间限制标识为第二标识的情况下,确定所述线程挂起失败,其中,所述第一标识用于指示可重启计时,所述第二标识用于指示不可重启计时。
123.在本发明上述实施例中,可选地,还包括:计时器延时单元,用于延长所述计时器的计时时长。
124.在本发明上述实施例中,可选地,所述计时器延时单元用于:将所述计时器的计时时长延长至指定时长,或者将所述计时器的计时时长延长至自身的指定倍数。
125.在本发明上述实施例中,可选地,还包括:第一初始设置单元,用于通过第一hook函数替换第一函数;调用所述第一hook函数延长所述计时器的计时时长;线程处理装置500还包括:挂起判断单元,用于调用所述第一函数判断当所述计时器超过经所述第一hook函数延长后的计时时长时所述线程是否已挂起成功。
126.在本发明上述实施例中,可选地,还包括:实时进程状态获取单元,用于获取所述线程所属主体的更新后的实时进程状态,以基于所述更新后的实时进程状态确定所述线程的所述挂起时间限制标识。
127.在本发明上述实施例中,可选地,还包括:第二初始设置单元,用于以第二hook函数替换第二函数,所述第二函数用于更新所述线程所属主体的实时进程状态;所述实时进程状态获取单元用于:调用所述第二hook函数获取所述线程所属主体的更新后的实时进程状态,以基于所述更新后的实时进程状态确定所述线程的所述挂起时间限制标识。
128.在本发明上述实施例中,可选地,还包括:指定流程检测单元,用于检测所述指定执行流程是否发生,以基于所述指定执行流程的发生确定所述线程的所述挂起时间限制标识。
129.在本发明上述实施例中,可选地,还包括:第三初始设置单元,用于以第三hook函数替换第三函数,所述第三函数用于执行指定执行流程;所述指定流程检测单元用于:调用所述第三hook函数检测所述指定执行流程是否发生。
130.在本发明上述实施例中,可选地,所述标识识别单元506用于:响应于所述指定执行流程的发生,设置所述线程的所述挂起时间限制标识为所述第一标识。
131.该线程处理装置500使用实施例一至实施例六中任一项所述的方案,因此,具有上述所有技术效果,在此不再赘述。
132.图6示出了根据本发明的一个实施例的电子设备的框图。
133.如图6所示,本发明的一个实施例的电子设备600,包括至少一个存储器602;以及,与所述至少一个存储器602通信连接的处理器604;其中,所述存储器存储有可被所述至少一个处理器604执行的指令,所述指令被设置为用于执行上述实施例一至实施例六中任一项所述的方案。因此,该电子设备600具有和实施例一至实施例六中任一项相同的技术效果,在此不再赘述。
134.本发明实施例的电子设备以多种形式存在,包括但不限于:
135.(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据
通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。
136.(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。
137.(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
138.(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
139.(5)其他具有数据交互功能的电子装置。
140.另外,本发明实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述实施例一至实施例六中任一项所述的方法流程。
141.以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,减少因线程挂起失败导致的进程崩溃的发生概率。进程崩溃的发生概率的降低使得虚拟机中应用的运行更具稳定性和可靠性,从而减少了应用崩溃现象,提升了用户对应用的使用体验。
142.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
143.取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
144.在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
145.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
146.上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
147.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献