CN105843675A - 线程退出方法和装置 - Google Patents

线程退出方法和装置 Download PDF

Info

Publication number
CN105843675A
CN105843675A CN201610205739.5A CN201610205739A CN105843675A CN 105843675 A CN105843675 A CN 105843675A CN 201610205739 A CN201610205739 A CN 201610205739A CN 105843675 A CN105843675 A CN 105843675A
Authority
CN
China
Prior art keywords
thread
abnormal
task
exits
abnormal thread
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
Application number
CN201610205739.5A
Other languages
English (en)
Other versions
CN105843675B (zh
Inventor
朴柏屹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Yayue Technology Co ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610205739.5A priority Critical patent/CN105843675B/zh
Publication of CN105843675A publication Critical patent/CN105843675A/zh
Application granted granted Critical
Publication of CN105843675B publication Critical patent/CN105843675B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44594Unloading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

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

线程退出方法和装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种线程退出方法和装置。
背景技术
随着计算机技术的快速发展,各种应用被广泛使用,比如浏览器应用,即时通信应用等。为了提高用户的使用体验,对应用稳定性的要求越来越高,而应用进程无法正常退出是影响应用稳定性的一项重要因素。应用进程无法正常退出主要表现在应用进程退出时存在未退出的异常线程,这些未退出的异常线程将会导致应用下次启动出现异常,严重降低应用的稳定性。
目前,相关技术检测进程中是否存在残留的异常线程通常是在每次启动应用主进程时,检测是否存在上次应用被使用时残留的异常线程,在检测到存在残留的异常线程时结束该异常线程。这种方式存在以下缺陷:
1、在每次启动应用主进程时检测上次应用被使用时残留的异常线程,将会导致无法及时分析并结束残留的异常线程,使得异常线程的分析反馈周期较长。
2、在每次启动应用主进程时进行异常线程的检测有可能导致应用主进程启动失败,使得应用无法正常启动,严重降低了应用的稳定性。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种线程退出方法和装置,以至少解决相关技术在应用进程退出时由于无法及时对残留线程进行分析并退出,导致降低应用稳定性的技术问题。
根据本发明实施例的一个方面,提供了一种线程退出方法,包括:在进程退出时检测是否存在未退出的异常线程,其中,异常线程是在进程被启动时建立的;若存在异常线程,则根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作,其中,退出操作用于退出异常线程。
根据本发明实施例的另一方面,还提供了一种线程退出装置,包括:检测模块,用于在进程退出时检测是否存在未退出的异常线程,其中,异常线程是在进程被启动时建立的;退出模块,用于在存在异常线程时,则根据异常线程所执行的任务当前所处的状态,对异常线程进行对应的退出操作,其中,退出操作用于退出异常线程。
在本发明实施例中,采用在进程退出时检测是否存在未退出的异常线程的方式,通过在进程退出时检测到存在未退出的异常线程时,根据异常线程所执行的任务当前所处的状态对该异常线程进行对应的退出操作,达到了在进程退出时保证所有线程退出,进而使得进程正常退出的目的,从而实现了提高应用稳定性的技术效果,进而解决了相关技术在应用进程退出时由于无法及时对残留线程进行分析并退出,导致降低应用稳定性的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的线程退出方法的硬件环境的示意图;
图2是根据本发明实施例的一种可选的线程退出方法的流程图;
图3是根据本发明实施例的一种可选的线程退出装置的示意图;
图4是根据本发明实施例的另一种可选的线程退出装置的示意图;
图5是根据本发明实施例的另一种可选的线程退出装置的示意图;
图6是根据本发明实施例的另一种可选的线程退出装置的示意图;
图7是根据本发明实施例的另一种可选的线程退出装置的示意图;
图8是根据本发明实施例的另一种可选的线程退出装置的示意图;
图9是根据本发明实施例的另一种可选的线程退出装置的示意图;以及
图10是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本发明实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
进程:是正在运行的程序的实例,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
线程:是程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可以与同属一个进程的其它线程共享进程所拥有的全部资源。线程可以有等待、阻塞以及运行三种基本状态,等待状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(比如某个信号量),逻辑上不可执行。
实施例1
根据本发明实施例,提供了一种线程退出方法的方法实施例。
可选地,在本实施例中,上述线程退出方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的线程退出方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的线程退出方法也可以是由安装在其上的客户端来执行。
图2是根据本发明实施例的一种可选的线程退出方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,在进程退出时检测是否存在未退出的异常线程,其中,异常线程是在进程被启动时建立的;
步骤S204,若存在异常线程,则根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作,其中,退出操作用于退出异常线程。
通过上述步骤S202至步骤S204,通过在进程退出时检测到存在未退出的异常线程时,根据异常线程所执行的任务当前所处的状态对该异常线程进行对应的退出操作,达到了在进程退出时保证所有线程退出,进而使得进程正常退出的目的,进而解决了相关技术在应用进程退出时由于无法及时对残留线程进行分析并退出,导致降低应用稳定性的技术问题,达到了提高应用稳定性的技术效果。
在步骤S202提供的技术方案中,进程可以为任意应用的进程,本发明实施例并未对应用类型做具体限定,其可以是浏览器应用,也可以是即时通信应用。应用进程中可以包括一个或者多个线程,每个线程执行对应的任务,每个线程均存在一个用于标识该线程的线程ID。在应用进程被启动时,本发明实施例可以通过线程资源管理器创建一个或者多个线程,每个线程唯一对应一个线程ID。在应用进程退出时,在进程被启动时创建的一个或者多个线程原则上应该正常退出,但是由于某种原因将会导致某一个或多个线程在进程退出时未退出,则这部分线程被称为异常线程,能够在进程退出时正常退出的线程则称为正常线程。需要说明的是,在进程退出时未退出的异常线程可以为一个,也可以为多个。在进程退出时能够退出的正常线程对应的线程ID会从线程资源管理器中删除,未退出的异常线程的线程ID则还会存在于线程资源管理器中。
本发明实施例在进程退出时检测是否存在未退出的异常线程,可以采用检测线程资源管理器中是否存在线程ID的方式,具体地,当线程资源管理器中存在线程ID时,说明在进程退出时存在未退出的异常线程,这些未退出的异常线程即为线程资源管理器中的线程ID对应的线程;当线程资源管理器中不存在线程ID时,说明在进程退出时不存在未退出的异常线程。需要说明的是,本发明实施例通过在进程退出时检测是否存在未退出的异常线程,无需在应用进程下次启动时再检测是否存在残留的异常线程,能够在该次应用进程退出时及时地检测异常线程并对异常线程进行相应的处理操作,进而能够在更断周期内解决进程无法正常退出的问题,有效地缩短了异常线程的处理周期,极大地提高了应用的稳定性。
在步骤S204提供的技术方案中,在进程退出时检测到存在未退出的异常线程时,本发明实施例可以对该异常线程进行退出操作,其中,退出操作可以用于退出该异常线程。本发明实施例在进程退出时如果检测到存在异常线程则对该异常线程执行退出操作,能够保证在本次应用进程退出时及时地解决异常线程无法退出的问题,相较于在下次启动应用进程时检测到异常进程再进行强制结束,本发明实施例能够缩短解决异常线程无法退出的时长,能够保证应用再次启动时的稳定性。
可选地,本发明实施例对异常线程执行的退出操作可以根据该异常线程所执行的任务当前所处的状态确定。线程所执行的任务可以包括网页访问任务、磁盘访问任务等,本发明实施例对此不做具体限定。线程所执行的任务当前所处的状态可以包括等待状态和非等待状态,其中,等待状态即为线程正在等待执行该线程对应的需要执行的任务,非等待状态可以包括运行状态和阻塞状态,其中,运行状态即为线程正在执行该线程对应的需要执行的任务,阻塞状态即为该线程正在等待某一个事件,比如某个信号量,逻辑上不可执行。需要说明的是,本发明实施例并未对异常线程所执行的任务所处的状态做具体限定,应用理解本发明实施例中的异常线程所执行的任务所处的状态还可以包括其他内容,此处不再一一举例说明。本发明实施例针对所执行的任务处于等待状态的异常进程可以执行取消所执行的任务的退出操作,针对所执行的任务处于非等待状态的异常进程可以执行强制退出操作,需要说明的是,本发明实施例并未具体限定所执行的任务处于等待状态的异常进程对应的退出操作,也并未具体限定所执行的任务处于非等待状态的异常进程对应的退出操作,所执行的任务处于等待状态或者非等待状态的异常进程对应的退出操作还可以包括其他操作,此处不再一一举例说明。
作为一种可选的实施例,步骤S204根据异常线程所执行的任务对异常线程进行对应的退出操作可以包括以下步骤:
步骤S2042,判断异常线程所执行的任务当前是否处于等待状态。
步骤S2044,若异常线程所执行的任务当前处于等待状态,则取消异常线程所执行的任务,使得异常线程正常退出。
步骤S2046,若异常线程所执行的任务当前不处于等待状态,则对异常线程进行强制退出。
需要说明的是,线程所执行的任务可以由线程对应的任务参数确定,其中,线程对应的任务参数中可以包括该线程对应的任务的类型、具体内容等。线程所执行的任务所处的状态可以由线程对应的状态参数确定,其中,线程对应的状态参数可以包括该线程所执行的任务当前所处的状态以及该线程所执行的任务下一阶段所处的状态等。该实施例依据异常线程对应的状态参数可以判断异常线程所执行的任务当前所处的状态是否是等待状态,当异常线程所执行的任务当前所处的状态为等待状态时,该实施例可以取消该异常线程所执行的任务,以实现退出该异常线程;当异常线程所执行的任务当前所处的状态不是等待状态,比如运行状态时,该实施例可以采用强制退出方式退出该异常线程。
该实施例依据异常线程所执行的任务当前所处的状态的不同,对异常线程执行不同的退出操作,能够达到有效地控制异常线程在进程退出时进行退出,以保证进程正常退出,进而达到提高应用稳定性的效果。
作为一种可选的实施例,步骤S2046对异常线程进行强制退出可以包括:从线程资源管理器中删除异常线程的标识,删除异常线程所执行的任务,并释放异常线程所占用的资源。
需要说明的是,在进程被启动时,通过线程资源管理器可以创建一个或者多个线程,每个线程对应的标识即线程ID均存储在线程资源管理器中,如果该线程退出,该线程对应的线程ID将会从线程资源管理器中删除,如果该线程未退出,该线程对应的线程ID将继续存在于线程资源管理器中。当对异常线程进行强制退出时,需要从线程资源管理器中删除该异常线程对应的线程ID。线程资源管理器在创建线程被时会为该线程分配具体的需要执行的任务,并在线程中设置任务参数以表征该线程需要执行的任务,线程运行过程即为该任务的执行过程。在进程退出时,如果线程对应的需要执行的任务执行完毕,则该线程可以正常退出;如果线程对应的需要执行的任务未执行完毕,则该线程不能正常退出,即该线程为异常线程,需要该实施例强制删除该异常线程所执行的任务,以保证该异常线程退出。线程运行过程中会占用部分系统资源,线程退出时其占用的资源将会被释放,如果线程在进程退出时未正常退出,该线程即为异常线程,需要该实施例强制释放该异常线程所占用的资源,以保证该异常线程退出。
该实施例对异常线程进行强制退出可以包括但不限于上述操作,该实施例还可以包括其他操作,此处不再一一举例说明。该实施例通过上述强制退出操作,能够保证在进程退出时异常进程均能退出,进而达到保证进程正常退出的目的,实现提高应用稳定性的效果。
作为一种可选的实施例,步骤S2042判断异常线程所执行的任务当前是否处于等待状态可以包括以下步骤:
步骤S20422,当任务包括磁盘访问任务时,判断任务当前是否处于等待磁盘访问结果,若是,则判断出异常线程所执行的任务当前处于等待状态。
步骤S20424,当任务包括网页访问任务时,判断任务当前是否处于等待网页访问结果,若是,则判断出异常线程所执行的任务当前处于等待状态。
需要说明的是,异常线程所执行的任务可以包括但并不限于磁盘访问任务和网页访问任务,异常线程所执行的任务还可以包括其他任务,此处不再一一举例说明。步骤S2042中的判断条件可以依据异常线程所执行的任务的不同而不同,当任务包括磁盘访问任务时,步骤S2042可以是判断磁盘访问任务当前是否处于等待磁盘访问结果,具体地,若磁盘访问任务当前处于等待磁盘访问结果,则可以确定该异常线程所执行的任务当前处于等待状态,否则确定该异常线程所执行的任务当前未处于等待状态。当任务包括磁盘访问任务时,步骤S2042可以是判断网页访问任务当前是否处于等待网页访问结果,具体地,若网页访问任务当前处于等待网页访问结果,则可以确定该异常线程所执行的任务当前处于等待状态,否则确定该异常线程所执行的任务当前未处于等待状态。
该实施例依据异常线程所执行的任务的种类不同设置有不同的判断异常线程所执行的任务是否处于等待状态的条件,能够保证对异常线程所执行的任务当前所处状态判断的准确度,进而达到针对异常线程所处状态的不同采取不同的退出操作,以实现保证异常线程退出的效果。
作为一种可选的实施例,在步骤S202在进程退出时检测是否存在未退出的异常线程之前,该实施例还可以包括以下步骤:
步骤S200,在进程被启动时,通过线程资源管理器创建包括异常线程在内的一个或多个线程,其中,线程资源管理器用于检测一个或多个线程是否正常退出。
需要说明的是,在应用进程被启动时,该实施例可以通过线程资源管理器创建一个或者多个线程,其中,所述一个或者多个线程中可以包括正常线程,也可以包括异常线程。线程资源管理器在创建一个或者多个线程时,会为每个线程分配唯一的线程ID,其中,线程ID用于标识不同的线程,所述一个或多个线程的线程ID存储在线程资源管理器中,当某个线程退出时,其对应的线程ID会从线程资源管理器中删除。因此,线程资源管理器可以利用线程退出时与其对应的线程ID会删除检测线程是否正常退出。线程资源管理器检测某个线程是否正常退出可以判断线程资源管理器中是否存在与该线程对应的线程ID,若存在,则说明该线程未正常退出;若不存在,则说明该线程正常退出。
该实施例利用线程资源管理器在进程被启动时创建一个或多个线程,并利用线程资源管理器检测线程是否正常退出,通过在进程启动过程中实时检测线程是否正常退出,能够达到在进程退出时及时获取未退出的异常线程的目的,进而能够缩短解决未退出的异常线程退出的时长,提高应用稳定性。
作为一种可选的实施例,在步骤S202在进程退出时检测是否存在未退出的异常线程之前,该实施例还可以包括以下步骤:
步骤S2012,在进程被启动之后,每隔预定周期判断是否存在正常退出的正常线程。
步骤S2014,若存在正常线程,则从线程资源管理器中删除正常线程的标识。
需要说明的是,在应用进程被启动之后,线程资源管理器可以创建一个或者多个线程,并对创建的一个或者多个线程进行实时监控。线程资源管理器可以每个预定周期检测是否存在正常退出的正常线程,在检测到存在正常线程时,线程资源管理器可以对该正常线程执行退出操作,可以包括从线程资源管理器中删除该正常线程对应的线程ID。需要说明的是,正常退出的正常线程在退出时将自动释放其所占的资源,以达到减小系统资源占用率的效果。此处还需要说明的是,线程资源管理器还可以对正常退出的正常线程执行其他退出操作,比如从线程资源管理器中删除该正常线程对应的任务参数等,此处不再一一举例说明。
该实施例通过线程资源管理器在检测到存在正常退出的正常线程时,从线程资源管理器中删除该正常线程对应的线程ID,进而使得在进程退出时可以从线程资源管理器中剩余的线程ID直接确定未退出的异常线程,达到了在进程退出时及时准确地确定未退出的异常线程的目的,进而实现了缩短解决异常线程无法退出问题的时长,提高应用的稳定性的效果。
作为一种可选的实施例,在步骤S204根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作时,该实施例还可以包括:将异常线程所执行的任务上报到云端设备。
需要说明的是,在检测到存在异常线程时,该实施例可以根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作,还可以对该异常线程进行分析,包括分析该异常线程所执行的任务等。在对该异常线程进行分析之后,该实施例可以将分析得到的包括该异常线程所执行的任务等信息上报给云端设备,其中,云端设备中可以存储有一个或者多个异常线程对应的所执行的任务、线程环境等信息。可选地,异常线程所执行的任务可以采用堆栈的方式存储在云端设备中。每当检测到一个异常线程,该实施例则会将该异常线程所执行的任务堆栈至云端设备,需要说民的是,不同异常线程所执行的任务可以以任务参数或者任务标识进行区分。
该实施例通过将异常线程所执行的任务上报到云端设备,以便于从云端设备中存储的信息中详细分析异常进程异常原因,便于对应用稳定性和流畅性的监控。
本发明实施例中的线程退出方法可以适用于任意种类的应用,比如浏览器应用、即时通信应用等。利用本发明实施例中的线程退出方法可以提高应用稳定性,有效地解决应用进程无法退出的问题,同时还可以加速异常线程无法退出的解决周期。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述线程退出方法的线程退出装置。图3是根据本发明实施例的一种可选的线程退出装置的示意图,如图3所示,该装置可以包括:
检测模块22,用于在进程退出时检测是否存在未退出的异常线程,其中,异常线程是在进程被启动时建立的;退出模块24,用于在存在异常线程时,则根据异常线程所执行的任务当前所处的状态,对异常线程进行对应的退出操作,其中,退出操作用于退出异常线程。
需要说明的是,该实施例中的检测模块22可以用于执行本申请实施例1中的步骤S202,该实施例中的退出模块24可以用于执行本申请实施例1中的步骤S204。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,利用检测模块22在进程退出时检测是否存在未退出的异常线程,利用退出模块24在检测到存在未退出的异常线程时根据异常线程所执行的任务当前所处的状态对该异常线程进行对应的退出操作,达到了在进程退出时保证所有线程退出,进而使得进程正常退出的目的,进而解决了相关技术在应用进程退出时由于无法及时对残留线程进行分析并退出,导致降低应用稳定性的技术问题,达到了提高应用稳定性的技术效果。
在检测模块22提供的方案中,进程可以为任意应用的进程,本发明实施例并未对应用类型做具体限定,其可以是浏览器应用,也可以是即时通信应用。应用进程中可以包括一个或者多个线程,每个线程执行对应的任务,每个线程均存在一个用于标识该线程的线程ID。在应用进程被启动时,本发明实施例可以通过线程资源管理器创建一个或者多个线程,每个线程唯一对应一个线程ID。在应用进程退出时,在进程被启动时创建的一个或者多个线程原则上应该正常退出,但是由于某种原因将会导致某一个或多个线程在进程退出时未退出,则这部分线程被称为异常线程,能够在进程退出时正常退出的线程则称为正常线程。需要说明的是,在进程退出时未退出的异常线程可以为一个,也可以为多个。在进程退出时能够退出的正常线程对应的线程ID会从线程资源管理器中删除,未退出的异常线程的线程ID则还会存在于线程资源管理器中。
本发明实施例的检测模块22可以采用检测线程资源管理器中是否存在线程ID的方式,具体地,当线程资源管理器中存在线程ID时,说明在进程退出时存在未退出的异常线程,这些未退出的异常线程即为线程资源管理器中的线程ID对应的线程;当线程资源管理器中不存在线程ID时,说明在进程退出时不存在未退出的异常线程。需要说明的是,本发明实施例的检测模块22通过在进程退出时检测是否存在未退出的异常线程,无需在应用进程下次启动时再检测是否存在残留的异常线程,能够在该次应用进程退出时及时地检测异常线程并对异常线程进行相应的处理操作,进而能够在更断周期内解决进程无法正常退出的问题,有效地缩短了异常线程的处理周期,极大地提高了应用的稳定性。
在退出模块24提供的技术方案中,在进程退出时检测到存在未退出的异常线程时,本发明实施例的退出模块24可以对该异常线程进行退出操作,其中,退出操作可以用于退出该异常线程。本发明实施例在进程退出时如果检测到存在异常线程则对该异常线程执行退出操作,能够保证在本次应用进程退出时及时地解决异常线程无法退出的问题,相较于在下次启动应用进程时检测到异常进程再进行强制结束,本发明实施例能够缩短解决异常线程无法退出的时长,能够保证应用再次启动时的稳定性。
可选地,本发明实施例的退出模块24对异常线程执行的退出操作可以根据该异常线程所执行的任务当前所处的状态确定。线程所执行的任务可以包括网页访问任务、磁盘访问任务等,本发明实施例对此不做具体限定。线程所执行的任务当前所处的状态可以包括等待状态和非等待状态,其中,等待状态即为线程正在等待执行该线程对应的需要执行的任务,非等待状态可以包括运行状态和阻塞状态,其中,运行状态即为线程正在执行该线程对应的需要执行的任务,阻塞状态即为该线程正在等待某一个事件,比如某个信号量,逻辑上不可执行。需要说明的是,本发明实施例并未对异常线程所执行的任务所处的状态做具体限定,应用理解本发明实施例中的异常线程所执行的任务所处的状态还可以包括其他内容,此处不再一一举例说明。本发明实施例针对所执行的任务处于等待状态的异常进程可以执行取消所执行的任务的退出操作,针对所执行的任务处于非等待状态的异常进程可以执行强制退出操作,需要说明的是,本发明实施例并未具体限定所执行的任务处于等待状态的异常进程对应的退出操作,也并未具体限定所执行的任务处于非等待状态的异常进程对应的退出操作,所执行的任务处于等待状态或者非等待状态的异常进程对应的退出操作还可以包括其他操作,此处不再一一举例说明。
作为一种可选的实施例,图4是根据本发明实施例的另一种可选的线程退出装置的示意图,如图4所示,退出模块24可以包括:第一判断模块242,用于判断异常线程所执行的任务当前是否处于等待状态;正常退出模块244,用于在异常线程所执行的任务当前处于等待状态时,取消异常线程所执行的任务,使得异常线程正常退出;强制退出模块246,用于在异常线程所执行的任务当前不处于等待状态时,对异常线程进行强制退出。
需要说明的是,该实施例中的第一判断模块242可以用于执行本申请实施例1中的步骤S2042,该实施例中的正常退出模块244可以用于执行本申请实施例1中的步骤S2044,该实施例中的强制退出模块246可以用于执行本申请实施例1中的步骤S2046。
需要说明的是,线程所执行的任务可以由线程对应的任务参数确定,其中,线程对应的任务参数中可以包括该线程对应的任务的类型、具体内容等。线程所执行的任务所处的状态可以由线程对应的状态参数确定,其中,线程对应的状态参数可以包括该线程所执行的任务当前所处的状态以及该线程所执行的任务下一阶段所处的状态等。该实施例依据异常线程对应的状态参数可以判断异常线程所执行的任务当前所处的状态是否是等待状态,当异常线程所执行的任务当前所处的状态为等待状态时,该实施例可以取消该异常线程所执行的任务,以实现退出该异常线程;当异常线程所执行的任务当前所处的状态不是等待状态,比如运行状态时,该实施例可以采用强制退出方式退出该异常线程。
该实施例依据异常线程所执行的任务当前所处的状态的不同,对异常线程执行不同的退出操作,能够达到有效地控制异常线程在进程退出时进行退出,以保证进程正常退出,进而达到提高应用稳定性的效果。
作为一种可选的实施例,图5是根据本发明实施例的另一种可选的线程退出装置的示意图,如图5所示,强制退出模块246可以包括:第一删除模块2462,用于从线程资源管理器中删除异常线程的标识,删除异常线程所执行的任务,并释放异常线程所占用的资源。
需要说明的是,在进程被启动时,通过线程资源管理器可以创建一个或者多个线程,每个线程对应的标识即线程ID均存储在线程资源管理器中,如果该线程退出,该线程对应的线程ID将会从线程资源管理器中删除,如果该线程未退出,该线程对应的线程ID将继续存在于线程资源管理器中。当对异常线程进行强制退出时,需要从线程资源管理器中删除该异常线程对应的线程ID。线程资源管理器在创建线程被时会为该线程分配具体的需要执行的任务,并在线程中设置任务参数以表征该线程需要执行的任务,线程运行过程即为该任务的执行过程。在进程退出时,如果线程对应的需要执行的任务执行完毕,则该线程可以正常退出;如果线程对应的需要执行的任务未执行完毕,则该线程不能正常退出,即该线程为异常线程,需要该实施例强制删除该异常线程所执行的任务,以保证该异常线程退出。线程运行过程中会占用部分系统资源,线程退出时其占用的资源将会被释放,如果线程在进程退出时未正常退出,该线程即为异常线程,需要该实施例强制释放该异常线程所占用的资源,以保证该异常线程退出。
该实施例对异常线程进行强制退出可以包括但不限于上述操作,该实施例还可以包括其他操作,此处不再一一举例说明。该实施例通过上述强制退出操作,能够保证在进程退出时异常进程均能退出,进而达到保证进程正常退出的目的,实现提高应用稳定性的效果。
作为一种可选的实施例,图6是根据本发明实施例的另一种可选的线程退出装置的示意图,如图6所示,第一判断模块242可以包括:第一子判断模块2422,用于当任务包括磁盘访问任务时,判断任务当前是否处于等待磁盘访问结果,若是,则判断出异常线程所执行的任务当前处于等待状态;第二子判断模块2424,用于当任务包括网页访问任务时,判断任务当前是否处于等待网页访问结果,若是,则判断出异常线程所执行的任务当前处于等待状态。
需要说明的是,该实施例中的第一子判断模块2422可以用于执行本申请实施例1中的步骤S20422,该实施例中的第二子判断模块2424可以用于执行本申请实施例1中的步骤S20424。
需要说明的是,异常线程所执行的任务可以包括但并不限于磁盘访问任务和网页访问任务,异常线程所执行的任务还可以包括其他任务,此处不再一一举例说明。第一判断模块242中的判断条件可以依据异常线程所执行的任务的不同而不同,当任务包括磁盘访问任务时,第一判断模块242可以包括第一子判断模块2422判断磁盘访问任务当前是否处于等待磁盘访问结果,具体地,若磁盘访问任务当前处于等待磁盘访问结果,则可以确定该异常线程所执行的任务当前处于等待状态,否则确定该异常线程所执行的任务当前未处于等待状态。当任务包括磁盘访问任务时,第一判断模块242可以包括第二子判断模块2424判断网页访问任务当前是否处于等待网页访问结果,具体地,若网页访问任务当前处于等待网页访问结果,则可以确定该异常线程所执行的任务当前处于等待状态,否则确定该异常线程所执行的任务当前未处于等待状态。
该实施例依据异常线程所执行的任务的种类不同设置有不同的判断异常线程所执行的任务是否处于等待状态的条件,能够保证对异常线程所执行的任务当前所处状态判断的准确度,进而达到针对异常线程所处状态的不同采取不同的退出操作,以实现保证异常线程退出的效果。
作为一种可选的实施例,图7是根据本发明实施例的另一种可选的线程退出装置的示意图,如图7所示,该实施例的线程退出装置还可以包括:第二判断模块212,用于在进程退出时检测是否存在未退出的异常线程之前,在进程被启动之后,每隔预定周期判断是否存在正常退出的正常线程;第二删除模块214,用于在存在正常线程时,从线程资源管理器中删除正常线程的标识。
需要说明的是,该实施例中的第一子判断模块2422可以用于执行本申请实施例1中的步骤S2012,该实施例中的第二删除模块214可以用于执行本申请实施例1中的步骤S2014。
需要说明的是,在应用进程被启动之后,线程资源管理器可以创建一个或者多个线程,并对创建的一个或者多个线程进行实时监控。线程资源管理器可以每个预定周期检测是否存在正常退出的正常线程,在检测到存在正常线程时,线程资源管理器可以对该正常线程执行退出操作,可以包括从线程资源管理器中删除该正常线程对应的线程ID。需要说明的是,正常退出的正常线程在退出时将自动释放其所占的资源,以达到减小系统资源占用率的效果。此处还需要说明的是,线程资源管理器还可以对正常退出的正常线程执行其他退出操作,比如从线程资源管理器中删除该正常线程对应的任务参数等,此处不再一一举例说明。
该实施例通过线程资源管理器在检测到存在正常退出的正常线程时,从线程资源管理器中删除该正常线程对应的线程ID,进而使得在进程退出时可以从线程资源管理器中剩余的线程ID直接确定未退出的异常线程,达到了在进程退出时及时准确地确定未退出的异常线程的目的,进而实现了缩短解决异常线程无法退出问题的时长,提高应用的稳定性的效果。
作为一种可选的实施例,图8是根据本发明实施例的另一种可选的线程退出装置的示意图,如图8所示,该实施例的线程退出装置还可以包括:创建模块20,用于在进程退出时检测是否存在未退出的异常线程之前,在进程被启动时,通过线程资源管理器创建包括异常线程在内的一个或多个线程,其中,线程资源管理器用于检测一个或多个线程是否正常退出。
需要说明的是,该实施例中的创建模块20可以用于执行本申请实施例1中的步骤S200。
需要说明的是,在应用进程被启动时,该实施例可以通过线程资源管理器创建一个或者多个线程,其中,所述一个或者多个线程中可以包括正常线程,也可以包括异常线程。线程资源管理器在创建一个或者多个线程时,会为每个线程分配唯一的线程ID,其中,线程ID用于标识不同的线程,所述一个或多个线程的线程ID存储在线程资源管理器中,当某个线程退出时,其对应的线程ID会从线程资源管理器中删除。因此,线程资源管理器可以利用线程退出时与其对应的线程ID会删除检测线程是否正常退出。线程资源管理器检测某个线程是否正常退出可以判断线程资源管理器中是否存在与该线程对应的线程ID,若存在,则说明该线程未正常退出;若不存在,则说明该线程正常退出。
该实施例利用线程资源管理器在进程被启动时创建一个或多个线程,并利用线程资源管理器检测线程是否正常退出,通过在进程启动过程中实时检测线程是否正常退出,能够达到在进程退出时及时获取未退出的异常线程的目的,进而能够缩短解决未退出的异常线程退出的时长,提高应用稳定性。
作为一种可选的实施例,图9是根据本发明实施例的另一种可选的线程退出装置的示意图,如图9所示,该实施例的线程退出装置还可以包括:上报模块26,用于在根据异常线程所执行的任务当前所处的状态,对异常线程进行对应的退出操作时,将异常线程所执行的任务上报到云端设备。
需要说明的是,在检测到存在异常线程时,该实施例可以根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作,还可以对该异常线程进行分析,包括分析该异常线程所执行的任务等。在对该异常线程进行分析之后,该实施例可以将分析得到的包括该异常线程所执行的任务等信息上报给云端设备,其中,云端设备中可以存储有一个或者多个异常线程对应的所执行的任务、线程环境等信息。可选地,异常线程所执行的任务可以采用堆栈的方式存储在云端设备中。每当检测到一个异常线程,该实施例则会将该异常线程所执行的任务堆栈至云端设备,需要说民的是,不同异常线程所执行的任务可以以任务参数或者任务标识进行区分。
该实施例通过将异常线程所执行的任务上报到云端设备,以便于从云端设备中存储的信息中详细分析异常进程异常原因,便于对应用稳定性和流畅性的监控。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
实施例3
根据本发明实施例,还提供了一种用于实施上述线程退出方法的服务器或终端。
图10是根据本发明实施例的一种终端的结构框图,如图10所示,该终端可以包括:一个或多个(图中仅示出一个)处理器201、存储器203、以及传输装置205(如上述实施例中的发送装置),如图10所示,该终端还可以包括输入输出设备207。
其中,存储器203可用于存储软件程序以及模块,如本发明实施例中的线程退出方法和装置对应的程序指令/模块,处理器201通过运行存储在存储器203内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的线程退出方法。存储器203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置205用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(NetworkInterface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器203用于存储应用程序。
处理器201可以通过传输装置205调用存储器203存储的应用程序,以执行下述步骤:在进程退出时检测是否存在未退出的异常线程,其中,异常线程是在进程被启动时建立的;若存在异常线程,则根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作,其中,退出操作用于退出异常线程。
处理器201还用于执行下述步骤:判断异常线程所执行的任务当前是否处于等待状态;若异常线程所执行的任务当前处于等待状态,则取消异常线程所执行的任务,使得异常线程正常退出;若异常线程所执行的任务当前不处于等待状态,则对异常线程进行强制退出。
处理器201还用于执行下述步骤:从线程资源管理器中删除异常线程的标识,删除异常线程所执行的任务,并释放异常线程所占用的资源。
处理器201还用于执行下述步骤:当任务包括磁盘访问任务时,判断任务当前是否处于等待磁盘访问结果,若是,则判断出异常线程所执行的任务当前处于等待状态;当任务包括网页访问任务时,判断任务当前是否处于等待网页访问结果,若是,则判断出异常线程所执行的任务当前处于等待状态。
处理器201还用于执行下述步骤:在进程退出时检测是否存在未退出的异常线程之前,在进程被启动之后,每隔预定周期判断是否存在正常退出的正常线程;若存在正常线程,则从线程资源管理器中删除正常线程的标识。
处理器201还用于执行下述步骤:在进程退出时检测是否存在未退出的异常线程之前,在进程被启动时,通过线程资源管理器创建包括异常线程在内的一个或多个线程,其中,线程资源管理器用于检测一个或多个线程是否正常退出。
处理器201还用于执行下述步骤:在根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作时,将异常线程所执行的任务上报到云端设备。
采用本发明实施例,提供了一种线程退出的方案。通过在进程退出时检测到存在未退出的异常线程时,根据异常线程所执行的任务当前所处的状态对该异常线程进行对应的退出操作,达到了在进程退出时保证所有线程退出,进而使得进程正常退出的目的,进而解决了相关技术在应用进程退出时由于无法及时对残留线程进行分析并退出,导致降低应用稳定性的技术问题,达到了提高应用稳定性的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图10所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,终端还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行线程退出方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,在进程退出时检测是否存在未退出的异常线程,其中,异常线程是在进程被启动时建立的;
S2,若存在异常线程,则根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作,其中,退出操作用于退出异常线程。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:判断异常线程所执行的任务当前是否处于等待状态;若异常线程所执行的任务当前处于等待状态,则取消异常线程所执行的任务,使得异常线程正常退出;若异常线程所执行的任务当前不处于等待状态,则对异常线程进行强制退出。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:从线程资源管理器中删除异常线程的标识,删除异常线程所执行的任务,并释放异常线程所占用的资源。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:当任务包括磁盘访问任务时,判断任务当前是否处于等待磁盘访问结果,若是,则判断出异常线程所执行的任务当前处于等待状态;当任务包括网页访问任务时,判断任务当前是否处于等待网页访问结果,若是,则判断出异常线程所执行的任务当前处于等待状态。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在进程退出时检测是否存在未退出的异常线程之前,在进程被启动之后,每隔预定周期判断是否存在正常退出的正常线程;若存在正常线程,则从线程资源管理器中删除正常线程的标识。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在进程退出时检测是否存在未退出的异常线程之前,在进程被启动时,通过线程资源管理器创建包括异常线程在内的一个或多个线程,其中,线程资源管理器用于检测一个或多个线程是否正常退出。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在根据异常线程所执行的任务当前所处的状态对异常线程进行对应的退出操作时,将异常线程所执行的任务上报到云端设备。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (14)

1.一种线程退出方法,其特征在于,包括:
在进程退出时检测是否存在未退出的异常线程,其中,所述异常线程是在所述进程被启动时建立的;
若存在所述异常线程,则根据所述异常线程所执行的任务当前所处的状态对所述异常线程进行对应的退出操作,其中,所述退出操作用于退出所述异常线程。
2.根据权利要求1所述的方法,其特征在于,根据所述异常线程所执行的任务对所述异常线程进行对应的退出操作包括:
判断所述异常线程所执行的任务当前是否处于等待状态;
若所述异常线程所执行的任务当前处于所述等待状态,则取消所述异常线程所执行的任务,使得所述异常线程正常退出;
若所述异常线程所执行的任务当前不处于所述等待状态,则对所述异常线程进行强制退出。
3.根据权利要求2所述的方法,其特征在于,对所述异常线程进行强制退出包括:
从线程资源管理器中删除所述异常线程的标识,删除所述异常线程所执行的任务,并释放所述异常线程所占用的资源。
4.根据权利要求2所述的方法,其特征在于,判断所述异常线程所执行的任务当前是否处于等待状态包括:
当所述任务包括磁盘访问任务时,判断所述任务当前是否处于等待磁盘访问结果,若是,则判断出所述异常线程所执行的任务当前处于所述等待状态;
当所述任务包括网页访问任务时,判断所述任务当前是否处于等待网页访问结果,若是,则判断出所述异常线程所执行的任务当前处于所述等待状态。
5.根据权利要求1所述的方法,其特征在于,在进程退出时检测是否存在未退出的异常线程之前,还包括:
在所述进程被启动之后,每隔预定周期判断是否存在正常退出的正常线程;
若存在所述正常线程,则从线程资源管理器中删除所述正常线程的标识。
6.根据权利要求1所述的方法,其特征在于,在进程退出时检测是否存在未退出的异常线程之前,还包括:
在所述进程被启动时,通过线程资源管理器创建包括所述异常线程在内的一个或多个线程,其中,所述线程资源管理器用于检测所述一个或多个线程是否正常退出。
7.根据权利要求1所述的方法,其特征在于,在根据所述异常线程所执行的任务当前所处的状态对所述异常线程进行对应的退出操作时,还包括:
将所述异常线程所执行的任务上报到云端设备。
8.一种线程退出装置,其特征在于,包括:
检测模块,用于在进程退出时检测是否存在未退出的异常线程,其中,所述异常线程是在所述进程被启动时建立的;
退出模块,用于在存在所述异常线程时,则根据所述异常线程所执行的任务当前所处的状态,对所述异常线程进行对应的退出操作,其中,所述退出操作用于退出所述异常线程。
9.根据权利要求8所述的装置,其特征在于,所述退出模块包括:
第一判断模块,用于判断所述异常线程所执行的任务当前是否处于等待状态;
正常退出模块,用于在所述异常线程所执行的任务当前处于所述等待状态时,取消所述异常线程所执行的任务,使得所述异常线程正常退出;
强制退出模块,用于在所述异常线程所执行的任务当前不处于所述等待状态时,对所述异常线程进行强制退出。
10.根据权利要求9所述的装置,其特征在于,所述强制退出模块包括:
第一删除模块,用于从线程资源管理器中删除所述异常线程的标识,删除所述异常线程所执行的任务,并释放所述异常线程所占用的资源。
11.根据权利要求9所述的装置,其特征在于,所述第一判断模块包括:
第一子判断模块,用于当所述任务包括磁盘访问任务时,判断所述任务当前是否处于等待磁盘访问结果,若是,则判断出所述异常线程所执行的任务当前处于所述等待状态;
第二子判断模块,用于当所述任务包括网页访问任务时,判断所述任务当前是否处于等待网页访问结果,若是,则判断出所述异常线程所执行的任务当前处于所述等待状态。
12.根据权利要求8所述的装置,其特征在于,还包括:
第二判断模块,用于在进程退出时检测是否存在未退出的异常线程之前,在所述进程被启动之后,每隔预定周期判断是否存在正常退出的正常线程;
第二删除模块,用于在存在所述正常线程时,从线程资源管理器中删除所述正常线程的标识。
13.根据权利要求8所述的装置,其特征在于,还包括:
创建模块,用于在进程退出时检测是否存在未退出的异常线程之前,在所述进程被启动时,通过线程资源管理器创建包括所述异常线程在内的一个或多个线程,其中,所述线程资源管理器用于检测所述一个或多个线程是否正常退出。
14.根据权利要求8所述的装置,其特征在于,还包括:
上报模块,用于在根据所述异常线程所执行的任务当前所处的状态,对所述异常线程进行对应的退出操作时,将所述异常线程所执行的任务上报到云端设备。
CN201610205739.5A 2016-04-01 2016-04-01 线程退出方法和装置 Active CN105843675B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610205739.5A CN105843675B (zh) 2016-04-01 2016-04-01 线程退出方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610205739.5A CN105843675B (zh) 2016-04-01 2016-04-01 线程退出方法和装置

Publications (2)

Publication Number Publication Date
CN105843675A true CN105843675A (zh) 2016-08-10
CN105843675B CN105843675B (zh) 2020-06-26

Family

ID=56596722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610205739.5A Active CN105843675B (zh) 2016-04-01 2016-04-01 线程退出方法和装置

Country Status (1)

Country Link
CN (1) CN105843675B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681753A (zh) * 2016-11-01 2017-05-17 腾讯科技(深圳)有限公司 软件的残留进程处理方法及装置
CN107861755A (zh) * 2017-03-14 2018-03-30 平安科技(深圳)有限公司 线程连接的控制方法及装置
CN110928596A (zh) * 2018-09-04 2020-03-27 北京奇虎科技有限公司 一种杀死常驻进程的方法及装置
CN111274086A (zh) * 2020-01-15 2020-06-12 湖北工程学院 一种计算机软件故障监测系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101114252A (zh) * 2006-07-25 2008-01-30 中兴通讯股份有限公司 管理线程异常的防护方法
CN101556545A (zh) * 2009-05-22 2009-10-14 北京星网锐捷网络技术有限公司 一种实现进程支持的方法、装置和多线程系统
CN101599039A (zh) * 2008-06-03 2009-12-09 华为技术有限公司 嵌入式c语言环境下异常处理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101114252A (zh) * 2006-07-25 2008-01-30 中兴通讯股份有限公司 管理线程异常的防护方法
CN101599039A (zh) * 2008-06-03 2009-12-09 华为技术有限公司 嵌入式c语言环境下异常处理方法及装置
CN101556545A (zh) * 2009-05-22 2009-10-14 北京星网锐捷网络技术有限公司 一种实现进程支持的方法、装置和多线程系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ZMXIANGDE_88: "Linux线程-终止", 《HTTPS://BLOG.CSDN.NET/ZMXIANGDE_88/ARTICLE/DETAILS/7997944》 *
何人之名: "主线程退出时,会首先去结束其他线程吗?", 《HTTPS://WWW.CNBLOGS.COM/HERENZHIMING/ARTICLES/3893556.HTML》 *
詹季春: "终止线程的三种方法", 《HTTPS://BLOG.CSDN.NET/ZHANJICHUN_2008/ARTICLE/DETAILS/6612980》 *
铁桶小分队: "Linux线程退出方式总结", 《HTTPS://BLOG.CSDN.NET/KEHEINASH/ARTICLE/DETAILS/50682435》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681753A (zh) * 2016-11-01 2017-05-17 腾讯科技(深圳)有限公司 软件的残留进程处理方法及装置
CN107861755A (zh) * 2017-03-14 2018-03-30 平安科技(深圳)有限公司 线程连接的控制方法及装置
CN110928596A (zh) * 2018-09-04 2020-03-27 北京奇虎科技有限公司 一种杀死常驻进程的方法及装置
CN110928596B (zh) * 2018-09-04 2024-02-06 三六零科技集团有限公司 一种杀死常驻进程的方法及装置
CN111274086A (zh) * 2020-01-15 2020-06-12 湖北工程学院 一种计算机软件故障监测系统
CN111274086B (zh) * 2020-01-15 2023-06-13 湖北工程学院 一种计算机软件故障监测系统

Also Published As

Publication number Publication date
CN105843675B (zh) 2020-06-26

Similar Documents

Publication Publication Date Title
CN105843675A (zh) 线程退出方法和装置
CN109634728A (zh) 作业调度方法、装置、终端设备及可读存储介质
CN104834602B (zh) 一种程序发布方法、装置和程序发布系统
CN109760041A (zh) 基于聊天机器人的云管理系统及其操作方法
CN108763009B (zh) 服务器压力测试方法、系统、设备及计算机可读存储介质
CN112769810B (zh) 防火墙测试方法、装置、非易失性存储介质和电子装置
CN107037782B (zh) 监控机床的方法和装置
CN109783157A (zh) 一种算法程序加载的方法及相关装置
CN105988904A (zh) 一种自适应测试方法及系统
CN106293920A (zh) 任务调度方法及装置
CN104793996A (zh) 一种并行计算设备的任务调度方法及任务调度装置
CN108616553B (zh) 云计算资源池进行资源调度的方法及装置
CN109658003A (zh) 一种物业设施设备管理系统及方法
CN109460361A (zh) 性能测试方法和装置、存储介质及电子装置
CN108776604A (zh) 目标任务的执行方法及系统
CN109743286A (zh) 一种基于图卷积神经网络的ip类型标记方法及设备
CN112464497A (zh) 基于分布式系统的故障演练方法、装置、设备及介质
CN108804287A (zh) 移动应用程序流量的自动获取方法、装置、系统及介质
CN109067645B (zh) 一种与nfv虚拟安全网关相连的网元设备
CN109656810A (zh) 一种图像算法的调试方法、调试系统及终端设备
CN109240914A (zh) 安全测试任务的监控管理方法及终端设备
CN109359034A (zh) 一种业务系统测试方法、计算机可读存储介质及终端设备
CN104834573B (zh) 一种退出智能终端误操作的方法、装置和一种智能终端
CN109426551A (zh) 一种事务处理方法及系统
CN106444724A (zh) 一种车辆智能诊断方法

Legal Events

Date Code Title Description
C06 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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221130

Address after: 1402, Floor 14, Block A, Haina Baichuan Headquarters Building, No. 6, Baoxing Road, Haibin Community, Xin'an Street, Bao'an District, Shenzhen, Guangdong 518100

Patentee after: Shenzhen Yayue Technology Co.,Ltd.

Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.