CN110321203B - 后台进程假死处理方法及客户端 - Google Patents
后台进程假死处理方法及客户端 Download PDFInfo
- Publication number
- CN110321203B CN110321203B CN201810273483.0A CN201810273483A CN110321203B CN 110321203 B CN110321203 B CN 110321203B CN 201810273483 A CN201810273483 A CN 201810273483A CN 110321203 B CN110321203 B CN 110321203B
- Authority
- CN
- China
- Prior art keywords
- background process
- server
- thread
- new
- message
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种后台进程假死处理方法及客户端,所述后台进程假死处理方法包括:监控后台进程是否进入假死状态;若所述后台进程进入假死状态,则断开所述后台进程中当前线程的套接字与服务器之间的连接;针对所述后台进程创建用于所述后台进程与所述服务器通信的新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,基于所述新的套接字与所述服务器之间的连接,实现所述新线程与所述服务器之间的通信。本发明提供的后台进程假死处理方法及客户端,能够保证后台进程切换回前台后还可继续使用。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种后台进程假死处理方法及客户端。
背景技术
进程是一个具有一定独立功能的程序,它是关于某个数据集合的一次运行活动。在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。通常,一个进程中可以包含若干个线程。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效地提高系统内多个程序间并发执行的程度。
进程切换是当今多任务多用户操作系统所应具有的基本功能。操作系统为了控制进程的执行,必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行,这种行为被称为进程切换、任务切换或上下文切换。出于节省系统空间、降低系统功耗、提升系统性能等原因,当客户端的应用进程被切换到后台后,一旦长时间不用,系统会自动清理掉一些没用的线程。当线程被系统清理掉后,该后台进程虽然仍能接收服务器下发的消息,但是却不能对服务器下发的消息进行处理,即进入了一种假死状态。对于进入假死状态的后台进程,当用户再将其切换到前台,该进程已不可继续使用。
发明内容
本发明所要解决的是后台进程假死导致切换回前台不可继续使用的问题。
本发明通过下述技术方案实现:
一种后台进程假死处理方法,包括:
监控后台进程是否进入假死状态;
若所述后台进程进入假死状态,则断开所述后台进程中当前线程的套接字与服务器之间的连接;
针对所述后台进程创建用于所述后台进程与所述服务器通信的新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,基于所述新的套接字与所述服务器之间的连接,实现所述新线程与所述服务器之间的通信。
可选的,所述监控后台进程是否进入假死状态包括:
判断所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时是否为阻塞状态;
若所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时不为阻塞状态,则所述后台进程进入假死状态。
可选的,所述监控后台进程是否进入假死状态包括:
判断所述后台进程中发送消息的线程在未接收到用户操作产生的消息时是否为阻塞状态;
若所述后台进程中发送消息的线程在未接收到用户操作产生的消息时不为阻塞状态,则所述后台进程进入假死状态。
可选的,所述建立所述新的套接字与所述服务器之间的连接包括:
由所述新的套接字向所述服务器发送连接请求;
所述服务器响应所述连接请求,并通过三次握手协议与所述新的套接字建立连接。
本发明提供一种客户端,包括:
监控模块,用于监控后台进程是否进入假死状态;
断开模块,用于在所述后台进程进入假死状态时断开所述后台进程中当前线程的套接字与服务器之间的连接;
重连模块,用于针对所述后台进程创建用于所述后台进程与所述服务器通信的新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,基于所述新的套接字与所述服务器之间的连接,实现所述新线程与所述服务器之间的通信。
可选的,所述监控模块包括:
判断模块,用于判断所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时是否为阻塞状态;
确定模块,用于在所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时不为阻塞状态时,确定所述后台进程进入假死状态。
可选的,所述监控模块包括:
判断模块,用于判断所述后台进程中发送消息的线程在未接收到用户操作产生的消息时是否为阻塞状态;
确定模块,用于在所述后台进程中发送消息的线程在未接收到用户操作产生的消息时不为阻塞状态时,确定所述后台进程进入假死状态。
可选的,所述建立所述新的套接字与所述服务器之间的连接包括:
由所述新的套接字向所述服务器发送连接请求;
所述服务器响应所述连接请求,并通过三次握手协议与所述新的套接字建立连接。
基于上述后台进程假死处理方法,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述后台进程假死处理方法。
基于上述后台进程假死处理方法,本发明还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述后台进程假死处理方法。
本发明与现有技术相比,具有如下的优点和有益效果:
后台进程进入假死状态,实质上是系统对所述后台进程中与服务器进行通信的线程进行了清理,导致与所述服务器进行通信的线程没有了阻塞能力。当所述后台进程被切换回前台后,由于与所述服务器进行通信的线程没有了阻塞能力,当所述服务器再向所述后台进程下发新消息,与所述服务器进行通信的线程已经无法对新消息进行处理,解析和分发消息的逻辑会被跳过,导致被切换回前台的后台进程不可使用。因此,本发明提供的后台进程假死处理方法及客户端,一直会对所述后台进程进行监控,一旦监控到所述后台进程进入假死状态,立即断开所述后台进程中当前套接字与服务器之间的连接,即舍弃没有了阻塞能力的、与服务器进行通信的旧线程,而再重新建立新线程,在新线程中创建新的套接字与服务器进行通信,使得后台进程产生了具有阻塞能力的、与服务器进行通信的新线程,能够对所述服务器下发的新消息进行处理,故而,保证了后台进程被切换回前台后可继续使用。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1是本发明实施例的后台进程假死处理方法的流程示意图;
图2是本发明实施例的客户端的结构示意图;
图3为本发明实施例提供的计算机设备整体结构示意图。
具体实施方式
正如背景技术中所描述的,后台进程长时间不用,系统会自动清理掉一些没用的线程,导致出现后台进程被切换回前台不可继续使用的问题。为了能够异步处理客户端和服务服务器之间的连接,让用户没有卡顿的感觉,通常应用进程的渲染和逻辑处理由一个线程处理,与服务器之间的通信由另一个线程处理,通过在线程中创建套接字与服务器中的套接字(socket)建立连接而进行通信。应用进程和服务器一旦建立连接后就具有了通信能力,正常情况下,对于应用进程中负责通信的线程来说,服务器如果有消息下发,应用进程中负责通信的线程就能接收;服务器如果没有消息下发,应用进程中负责通信的线程就处于阻塞状态,即等待状态。发明人通过研究发现,当前台正在运行的应用进程被切换到后台后,如果长时间不用,系统会对后台进程中与服务器进行通信的线程进行清理。当与服务器进行通信的线程被清理后,即使服务器没有下发消息,后台进程中负责通信的线程也不会进行阻塞了。当服务器再向后台进程下发新消息,后台进程中负责通信的线程已经无法对新消息进行处理,解析和分发消息的逻辑会被跳过,导致被切换回前台的后台进程不可使用。基于此,本发明提供一种后台进程假死处理方法及客户端,所述后台进程假死处理方法包括:监控后台进程是否进入假死状态;若所述后台进程进入假死状态,则断开所述后台进程中当前套接字与服务器之间的连接;针对所述后台进程创建用于所述后台进程与所述服务器通信的新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,基于所述新的套接字与所述服务器之间的连接,实现所述新线程与所述服务器之间的通信。
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例1
本实施例提供一种后台进程假死处理方法,图1是所述后台进程假死处理方法的流程示意图,所述后台进程假死处理方法包括:
步骤S11,监控后台进程是否进入假死状态;
步骤S12,若所述后台进程进入假死状态,则断开所述后台进程中当前线程的套接字与服务器之间的连接;
步骤S13,针对所述后台进程创建用于所述后台进程与所述服务器通信的新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,基于所述新的套接字与所述服务器之间的连接,实现所述新线程与所述服务器之间的通信。
具体地,应用进程和服务器一旦建立连接后就具有了通信能力,即使被切换到后台,在正常情况下后台进程也是可以与服务器进行通信的。然而,后台进程长时间不用,系统就会对后台进程中与服务器进行通信的线程进行清理,导致与服务器进行通信的线程没有了阻塞能力。因此,所述监控后台进程是否进入假死状态即是监控所述后台进程中与服务器进行通信的线程是否还有阻塞能力。进一步,线程具有就绪、阻塞和运行三种基本状态:就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件,逻辑上不可执行。因此,监控所述后台进程中与服务器进行通信的线程是否还有阻塞能力,可以通过判断所述后台进程中与服务器进行通信的线程在未收发消息时是否为阻塞状态进行确定。
所述后台进程中与服务器进行通信的线程包括接收消息的线程和发送消息的线程。所述后台进程中接收消息的线程用于接收服务器下发的消息,服务器如果没有消息下发,正常情况下所述后台进程中接收消息的线程应处于阻塞状态;所述后台进程中发送消息的线程用于发送用户操作产生的消息,用户操作如果没有产生消息,正常情况下所述后台进程中发送消息的线程应处于阻塞状态。因此,所述监控后台进程是否进入假死状态监控所述后台进程中接收消息的线程或者监控所述后台进程中发送消息的线程都可以,即:
判断所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时是否为阻塞状态,若所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时不为阻塞状态,则所述后台进程进入假死状态;或者,判断所述后台进程中发送消息的线程在未接收到用户操作产生的消息时是否为阻塞状态,若所述后台进程中发送消息的线程在未接收到用户操作产生的消息时不为阻塞状态,则所述后台进程进入假死状态。由于所述后台进程发送的消息是由用户操作产生的,进程被切换到后台后,用户就不可能再进行操作,所述后台进程中发送消息的线程会一直处于阻塞状态;而所述后台进程接收的消息是由服务器下发的,进程被切换到后台后,服务器仍有可能会下发消息,因此,监控所述后台进程中接收消息的线程更方便扩展。
进行通信的双方通常通过套接字建立连接,套接字用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。每种服务都打开一个套接字,并绑定到一个端口上,不同的端口对应于不同的服务。监控到所述后台进程进入假死状态后,需要重新建立具有阻塞能力的、与所述服务器进行通信的新线程替代失去了阻塞能力的、与所述服务器进行通信的旧线程。由于每个应用进程和指定的服务器连接只有一个端口,因而在创建与所述服务器进行通信的新线程之前,先要断开所述后台进程中当前线程的套接字与所述服务器之间的连接,即关闭失去了阻塞能力的、与所述服务器进行通信的旧线程中的套接字。关闭所述当前套接字后,与所述服务器进行通信的旧线程由于没有任何工作在处理,会进入闲置状态,等待JVM(垃圾回收机制)回收,不需要进行其他处理。所述断开所述后台进程中当前套接字与所述服务器之间的连接的具体方法如下:
调用close()函数后,向所述服务器发送FIN数据包,进入FIN_WAIT_1状态,其中,FIN是Finish的缩写,表示完成任务需要断开连接;所述服务器收到数据包后,检测到设置了FIN标志位,知道要断开连接,于是发送“确认包”,进入CLOSE_WAIT状态;收到“确认包”后,进入FIN_WAIT_2状态,等待所述服务器准备完毕后再次发送数据包;等待片刻后,所述服务器准备完毕,可以断开连接,于是再主动发送FIN包,然后进入LAST_ACK状态;收到所述服务器的FIN包后,再向所述服务器发送ACK包,然后进入TIME_WAIT状态;所述服务器收到所述后台进程的ACK包后就断开连接,关闭套接字,进入CLOSED状态,即断开了所述后台进程中当前套接字与所述服务器之间的连接。
断开所述后台进程中当前套接字与服务器之间的连接后,针对所述后台进程创建新线程。针对不同的多线程操作方式,创建新线程的方法也不一样。在本实施例中,以采用handler+thread机制的多线程操作方式方式为例,创建所述新线程包括:自定义类实现Runnable接口;将所述新线程的逻辑写在Run方法中;在所述新线程使用handler机制的sendmessage方法向所述后台进程的主线程发一个消息,在主线程使用handler机制的handlermessage方法对该消息进行接收处理,这样就实现了所述新线程和主线程之间的通信。本领域技术人员知晓如何根据多线程操作方式创建新线程,在此不再赘述。
创建好所述新线程后,就建立好了套接字的初始化以及连接工作的运行环境,在所述新线程中创建新的套接字,根据所述服务器IP和端口号对所述新的套接字进行初始化,并由所述新的套接字向所述服务器发送连接请求,所述服务器响应所述连接请求,并通过三次握手协议与所述新的套接字建立连接。
具体地,调用connect()函数后,TCP协议会组建一个数据包,并设置SYN标志位,表示该数据包是用来建立同步连接的。同时生成一个随机数字,填充序号字段,表示该数据包的序号。完成这些工作,开始向所述服务器发送数据包,进入SYN-SEND状态。
所述服务器收到数据包,检测到已经设置了SYN标志位,所述服务器也会组建一个数据包,并设置SYN和ACK标志位,SYN表示该数据包用来建立连接,ACK用来确认收到了刚才所述后台进程发送的数据包。所述服务器生成一个随机数,填充序号字段。所述服务器将接收到的数据包序号加1,并用这个数字填充确认号字段。所述服务器将数据包发出,进入SYN-RECV状态。
接收到所述服务器发送的数据包,检测到已经设置了SYN和ACK标志位,检测确认号字段,看它的值是否为数据包序号加1,如果是就说明连接建立成功。接下来,继续组建数据包,并设置ACK标志位,表示正确接收了所述服务器发来的确认包。同时,将刚才所述服务器发来的数据包序号加1,并用这个数字来填充确认号字段。将数据包发出,进入ESTABLISED状态,表示连接已经成功建立。
所述服务器收到数据包,检测到已经设置了ACK标志位,所述服务器会检测确认号字段,看它的值是否为其发送的数据包序号加1,如果是就说明连接建立成功,所述服务器进入ESTABLISED状态。至此,成功建立所述新的套接字与所述服务器之间的连接,所述后台进程又可以对所述服务器下发的消息进行解析和分发了。
基于同样的发明构思,本发明还提供了一种客户端,具体参见实施例2。
实施例2
本实施例提供一种客户端,图2是本实施例的客户端的结构示意图,所述客户端包括监控模块11、断开模块12以及重连模块13。
具体地,所述监控模块11用于监控后台进程是否进入假死状态,所述断开模块12用于在所述后台进程进入假死状态时断开所述后台进程中当前线程的套接字与服务器之间的连接,所述重连模块13用于针对所述后台进程创建用于所述后台进程与所述服务器通信的新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,基于所述新的套接字与所述服务器之间的连接,实现所述新线程与所述服务器之间的通信。进一步,所述监控模块11包括判断模块和确定模块。所述判断模块用于判断所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时是否为阻塞状态,所述确定模块用于在所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时不为阻塞状态时,确定所述后台进程进入假死状态。或者,所述判断模块用于判断所述后台进程中发送消息的线程在未接收到用户操作产生的消息时是否为阻塞状态,所述确定模块用于在所述后台进程中发送消息的线程在未接收到用户操作产生的消息时不为阻塞状态时,确定所述后台进程进入假死状态。所述建立所述新的套接字与所述服务器之间的连接包括:由所述新的套接字向所述服务器发送连接请求;所述服务器响应所述连接请求,并通过三次握手协议与所述新的套接字建立连接。所述客户端的具体工作原理可参考实施例1中对于步骤S11至步骤S13的描述,本实施例不再赘述。
基于同样的发明构思,本发明还提供了一种与后台进程假死处理方法相对应的计算机可读存储介质及计算机设备,具体参见实施例3。
实施例3
本实施例还提供一种用于处理后台进程假死的计算机设备,如图3所示,所述计算机设备包括:射频(Radio Frequency,RF)电路310、存储器320、输入单元330、显示单元340、音频电路350、WiFi模块360、处理器370、以及电源380等部件。本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图3对计算机设备的各个构成部件进行具体的介绍:
RF电路310可用于信号的接收和发送,特别地,将基站的下行信息接收后,给处理器370处理。通常,RF电路310包括但不限于至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。
存储器320可用于存储软件程序以及模块,处理器370通过运行存储在存储器320的软件程序以及模块,从而执行计算机设备的各种功能应用以及数据处理。存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元330可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元330可包括键盘331以及其他输入设备332。键盘331,可收集用户在其上的输入操作,并根据预先设定的程式驱动相应的连接装置。键盘331采集到输出信息后再送给处理器370。除了键盘331,输入单元330还可以包括其他输入设备332。具体地,其他输入设备332可以包括但不限于触控面板、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元340可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元340可包括显示面板341,可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板341。进一步的,键盘331可覆盖显示面板341,当键盘331检测到在其上或附近的触摸操作后,传送给处理器370以确定触摸事件的类型,随后处理器370根据输入事件的类型在显示面板341上提供相应的视觉输出。虽然在图3中键盘331与显示面板341是作为两个独立的部件来实现计算机设备的输入和输入功能,但是在某些实施例中,可以将键盘331与显示面板341集成而实现计算机设备的输入和输出功能。
音频电路350、扬声器351,传声器352可提供用户与计算机设备之间的音频接口。音频电路350可将接收到的音频数据转换后的电信号,传输到扬声器351,由扬声器351转换为声音信号输出。
WiFi属于短距离无线传输技术,计算机设备通过WiFi模块360可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图3示出了WiFi模块360,但是可以理解的是,其并不属于计算机设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器370是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器320内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器370可包括一个或多个处理单元;优选的,处理器370可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
计算机设备还包括给各个部件供电的电源380(比如电源适配器),优选的,电源可以通过电源管理系统与处理器370逻辑相连。
本发明提供的后台进程假死处理方法、客户端以及计算机设备,通过对后台进程进行监控,一旦监控到所述后台进程进入假死状态,立即断开所述后台进程中当前套接字与服务器之间的连接,再针对所述后台进程创建新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,即舍弃没有了阻塞能力的旧线程,重新建立新线程与所述服务器进行通信,保证所述后台进程被切换回前台后可继续使用。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP,Digital Signal Processing)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读存储介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种后台进程假死处理方法,其特征在于,包括:
监控后台进程是否进入假死状态,其中,所述假死状态为与服务器进行通信的线程无阻塞能力而造成的进程假死;
若所述后台进程进入假死状态,则断开所述后台进程中当前线程的套接字与服务器之间的连接;
针对所述后台进程创建用于所述后台进程与所述服务器通信的新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,基于所述新的套接字与所述服务器之间的连接,实现所述新线程与所述服务器之间的通信。
2.根据权利要求1所述的后台进程假死处理方法,其特征在于,所述监控后台进程是否进入假死状态包括:
判断所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时是否为阻塞状态;
若所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时不为阻塞状态,则所述后台进程进入假死状态。
3.根据权利要求1所述的后台进程假死处理方法,其特征在于,所述监控后台进程是否进入假死状态包括:
判断所述后台进程中发送消息的线程在未接收到用户操作产生的消息时是否为阻塞状态;
若所述后台进程中发送消息的线程在未接收到用户操作产生的消息时不为阻塞状态,则所述后台进程进入假死状态。
4.根据权利要求1至3任一项所述的后台进程假死处理方法,其特征在于,所述建立所述新的套接字与所述服务器之间的连接包括:
由所述新的套接字向所述服务器发送连接请求;
所述服务器响应所述连接请求,并通过三次握手协议与所述新的套接字建立连接。
5.一种客户端,其特征在于,包括:
监控模块,用于监控后台进程是否进入假死状态,其中,所述假死状态为与服务器进行通信的线程无阻塞能力而造成的进程假死;
断开模块,用于在所述后台进程进入假死状态时断开所述后台进程中当前线程的套接字与服务器之间的连接;
重连模块,用于针对所述后台进程创建用于所述后台进程与所述服务器通信的新线程,在所述新线程中创建新的套接字,并建立所述新的套接字与所述服务器之间的连接,基于所述新的套接字与所述服务器之间的连接,实现所述新线程与所述服务器之间的通信。
6.根据权利要求5所述的客户端,其特征在于,所述监控模块包括:
判断模块,用于判断所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时是否为阻塞状态;
确定模块,用于在所述后台进程中接收消息的线程在未接收到所述服务器下发的消息时不为阻塞状态时,确定所述后台进程进入假死状态。
7.根据权利要求5所述的客户端,其特征在于,所述监控模块包括:
判断模块,用于判断所述后台进程中发送消息的线程在未接收到用户操作产生的消息时是否为阻塞状态;
确定模块,用于在所述后台进程中发送消息的线程在未接收到用户操作产生的消息时不为阻塞状态时,确定所述后台进程进入假死状态。
8.根据权利要求5至7任一项所述的客户端,其特征在于,所述建立所述新的套接字与所述服务器之间的连接包括:
由所述新的套接字向所述服务器发送连接请求;
所述服务器响应所述连接请求,并通过三次握手协议与所述新的套接字建立连接。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4任一项所述后台进程假死处理方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一项所述后台进程假死处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810273483.0A CN110321203B (zh) | 2018-03-29 | 2018-03-29 | 后台进程假死处理方法及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810273483.0A CN110321203B (zh) | 2018-03-29 | 2018-03-29 | 后台进程假死处理方法及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110321203A CN110321203A (zh) | 2019-10-11 |
CN110321203B true CN110321203B (zh) | 2021-07-30 |
Family
ID=68111017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810273483.0A Active CN110321203B (zh) | 2018-03-29 | 2018-03-29 | 后台进程假死处理方法及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110321203B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111898158B (zh) * | 2020-07-23 | 2023-09-26 | 百望股份有限公司 | 一种ofd文档的加密方法 |
CN111983583A (zh) * | 2020-08-14 | 2020-11-24 | 广东电网有限责任公司 | 一种基于光学扫描技术的配网巡线可视化系统 |
CN113132356B (zh) * | 2021-03-23 | 2023-06-27 | 网宿科技股份有限公司 | Udp报文的分发方法、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9749209B2 (en) * | 2013-11-01 | 2017-08-29 | The Nielsen Company (Us), Llc | Methods and apparatus to credit background applications |
CN106815065B (zh) * | 2015-11-27 | 2020-02-11 | 腾讯科技(深圳)有限公司 | 后台应用的唤醒方法及装置、电子设备 |
CN106201690A (zh) * | 2016-07-07 | 2016-12-07 | 乐视控股(北京)有限公司 | 应用运行控制方法及装置 |
CN107704274B (zh) * | 2017-08-24 | 2019-11-05 | 武汉斗鱼网络科技有限公司 | 用于安卓应用主进程唤醒的方法、存储介质、设备及系统 |
CN107678782B (zh) * | 2017-09-14 | 2020-03-17 | 平安科技(深圳)有限公司 | 一种进程保护方法、装置、设备以及计算机可读存储介质 |
-
2018
- 2018-03-29 CN CN201810273483.0A patent/CN110321203B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110321203A (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321203B (zh) | 后台进程假死处理方法及客户端 | |
EP3176980B1 (en) | Unified server communication method, baseboard management controller and server | |
EP3352431B1 (en) | Network load balance processing system, method, and apparatus | |
WO2014032233A1 (zh) | 虚拟机热迁移的系统和方法 | |
US10191760B2 (en) | Proxy response program, proxy response device and proxy response method | |
CN109088799B (zh) | 一种客户端接入方法、装置、终端以及存储介质 | |
CN108430116A (zh) | 断网重连方法、介质、装置和计算设备 | |
CN108063813B (zh) | 一种集群环境下密码服务网络并行化的方法与系统 | |
CN103139157B (zh) | 一种基于socket的网络通信方法、装置及系统 | |
EP3550802A1 (en) | Method and device for processing persistent connection establishment request | |
JP2003030165A (ja) | 複数の連結したデータ処理ノードからなるネットワークでのノード状態を決定するための方法及び/又はノード活性を決定する方法 | |
CN104601523B (zh) | 一种传输数据的方法及装置 | |
CN107193673A (zh) | 一种报文处理方法及设备 | |
CN102984237A (zh) | 一种基于socket连接的数据传输系统及方法 | |
US20180084597A1 (en) | Method of managing communication interfaces for a multipath transmission control protocol (mptcp) connection | |
CN105960817B (zh) | 通信设备和用于配置通信设备的方法、存储介质 | |
CN102137158A (zh) | 利用设备代理系统实现信息设备资源共享的方法 | |
CN104079398B (zh) | 一种数据通信方法、装置及系统 | |
KR20080024751A (ko) | 임베디드 단말의 OSGi 미들웨어 환경에서 이원화된애플리케이션 관리를 통한 애플리케이션 경량화를 위한장치 및 그 방법 | |
CN110401939B (zh) | 一种低功耗蓝牙控制器链路层装置 | |
WO2024040846A1 (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN108549564B (zh) | 用户界面的显示处理方法及客户端 | |
KR20160036846A (ko) | 채널 연결 관리 방법 및 장치 | |
CN107070872B (zh) | 一种用于客户端的数据处理方法和装置 | |
CN102693434B (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 |