一种心跳控制方法和装置与流程

文档序号:25542002发布日期:2021-06-18 20:38阅读:86来源:国知局
一种心跳控制方法和装置与流程

本发明涉及通信技术,特别是涉及一种心跳控制方法和装置。



背景技术:

现有专网终端中的应用程序,为了与服务器之间保持长连接,会像心跳一样,每隔固定时间发送心跳包给服务器,以检测连接是否正常,并以此告知服务器本应用客户端还活着。具体方法如下:

客户端在一个timer事件中定时向服务器发送一个短小的数据包(即心跳包),然后启动一个低级别的线程,在该线程中不断检测服务器的回应,如果在一定时间内没有收到服务器的回应,即认为本客户端已经掉线。

发明人在实现本发明的过程中发现:上述现有的心跳控制方案存在终端功耗较大的问题,具体原因分析如下:

现有的心跳控制方案是以单个应用为心跳控制主体,每个应用根据自身的心跳控制需求设置心跳周期,利用timer事件,基于该心跳周期定时地触发所在终端发送心跳包。这样,当终端中安装了多个需要和服务器保持长连接的应用时,终端中就会设置相应数量的多个timer事件,每个timer事件对应的心跳周期到达时都要唤醒终端的处理器(cpu),而每个timer事件对cpu的唤醒是独立进行的,从而导致终端的cpu会被频繁地唤醒,进而造成终端心跳功耗很大。



技术实现要素:

有鉴于此,本发明的主要目的在于提供一种心跳控制方法和装置,能够有效降低终端的心跳功耗。

为了达到上述目的,本发明实施例提出的技术方案为:

一种心跳控制方法,包括:

当终端中新增了需要心跳控制的应用时,将所述应用的心跳任务tasknew增加至当前的心跳任务集合gtask中;如果所述gtask中仅有一个任务,则将主控周期tmain设置为所述tasknew的心跳周期tnew,以所述tmain为定时时长,启动主控定时器,根据所述tnew和所述tmain,设置所述tasknew的计数次数;如果所述gtask中有至少两个任务且当前所述主控定时器超时,则在执行超时处理过程后,执行控制参数更新过程;如果所述gtask中有至少两个任务且所述主控定时器未超时,则直接执行所述控制参数更新过程;

当所述主控定时器超时时,执行所述超时处理过程;

所述超时处理过程包括:以当前的所述tmain为定时时长,重启所述主控定时器;根据所述gtask中每个任务的所述计数次数,查找出当前需要执行心跳事件的任务,并执行相应的心跳事件;对所述gtask中每个任务的计数次数进行超时更新;

所述控制参数更新过程包括:根据所述tnew和所述tmain,判断是否需要更新所述tmain,根据判断结果,对所述tmain和所述gtask中任务的计数次数进行相应更新。

较佳地,所述设置所述tasknew的计数次数包括:

将所述tasknew的计数次数设置为所述tnew和所述tmain比值的取整值。

较佳地,所述根据所述gtask中每个任务的所述计数次数,查找出当前需要执行心跳事件的任务包括:

将所述gtask中计数次数为1的任务,确定为当前需要执行心跳事件的任务。

较佳地,所述对所述gtask中每个任务的计数次数进行超时更新包括:

对所述gtask中的每个任务,如果该任务的计数次数为1,则将该任务的计数次数更新为该任务的心跳周期和所述tmain比值的取整值,否则,将该任务的计数次数减1。

较佳地,所述判断是否需要更新所述tmain,根据判断结果,对所述tmain和所述gtask中任务的计数次数进行相应更新包括:

如果所述tnew小于所述tmain,则将所述tmain更新为所述tnew,并且对于所述gtask中每个任务,将该任务的计数次数设置为该任务的心跳周期和所述tmain比值的取整值;否则,将所述tasknew的计数次数设置为所述tnew和所述tmain比值的取整值。

一种心跳控制装置,设置于终端中,包括:处理器,所述处理器用于:

当终端中新增了需要心跳控制的应用时,将所述应用的心跳任务tasknew增加至当前的心跳任务集合gtask中;如果所述gtask中仅有一个任务,则将所述tasknew的心跳周期tnew设置为主控周期tmain,以所述tmain为定时时长,启动主控定时器,根据所述tnew和所述tmain,设置所述tasknew的计数次数;如果所述gtask中有至少两个任务且当前所述主控定时器超时,则在执行超时处理过程后,执行控制参数更新过程;如果所述gtask中有至少两个任务且当前所述主控定时器未超时,则直接执行所述控制参数更新过程;

当所述主控定时器超时时,执行所述超时处理过程;

所述超时处理过程包括:以当前的所述tmain为定时时长,重启所述主控定时器;根据所述gtask中每个任务的所述计数次数,查找出当前需要执行心跳事件的任务,并执行相应的心跳事件;对所述gtask中每个任务的计数次数进行超时更新;

所述控制参数更新过程包括:根据所述tnew和所述tmain,判断是否需要更新所述tmain,根据判断结果,对所述tmain和所述gtask中任务的计数次数进行相应更新。

较佳地,所述处理器具体用于:设置所述tasknew的计数次数,包括:

将所述tasknew的计数次数设置为所述tnew和所述tmain比值的取整值。

较佳地,所述处理器具体用于:根据所述gtask中每个任务的所述计数次数,查找出当前需要执行心跳事件的任务包括:

将所述gtask中计数次数为1的任务,确定为当前需要执行心跳事件的任务。

较佳地,所述处理器具体用于:对所述gtask中每个任务的计数次数进行超时更新,包括:

对所述gtask中的每个任务,如果该任务的计数次数为1,则将该任务的计数次数更新为该任务的心跳周期和所述tmain比值的取整值,否则,将该任务的计数次数减1。

较佳地,所述处理器具体用于:判断是否需要更新所述tmain,根据判断结果,对所述tmain和所述gtask中任务的计数次数进行相应更新,包括:

如果所述tnew小于所述tmain,则将所述tmain更新为所述tnew,并且对于所述gtask中每个任务,将该任务的计数次数设置为该任务的心跳周期和所述tmain比值的取整值;否则,将所述tasknew的计数次数设置为所述tnew和所述tmain比值的取整值。

本申请还公开了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上所述的心跳控制方法的步骤。

本申请还公开了一种电子设备,包括如前所述的非易失性计算机可读存储介质、以及可访问所述非易失性计算机可读存储介质的所述处理器。

综上所述,上述发明中的实施例提出的心跳控制方法和装置,通过仅由一个主控定时器,来统一控制终端中所有心跳事件的执行,在确保每个任务的心跳事件都可以被及时触发的同时,有效减少了cpu被唤醒的次数,因此,能够降低终端的心跳功耗,有效避免分别由每个应用独立控制心跳事件的执行所致的心跳功耗较大的问题。

附图说明

图1为本发明实施例的方法流程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。

图1为本发明实施例的方法流程示意图,如图1所示,该实施例实现的心跳控制方法主要包括:

步骤101、当终端中新增了需要心跳控制的应用时,将所述应用的心跳任务tasknew增加至当前的心跳任务集合gtask中。

本步骤中,当终端中新增了需要心跳控制的应用时,需要将该应用的心跳任务tasknew增加至终端中当前的心跳任务集合gtask中,以便此后基于该心跳任务集合gtask,对终端中需要执行的心跳事件进行统一控制。

步骤102、判断所述gtask中是否仅有一个任务,如果是,则执行步骤103;否则,执行步骤104。

本步骤中,在心跳任务tasknew增加至心跳任务集合gtask后,如果该gtask中是否仅有tasknew这一个任务,则需要执行步骤103,利用tasknew的心跳周期对心跳的控制参数进行设置,否则,需要转入步骤104,对已有的控制参数(包括心跳周期tnew、心跳任务的计数次数)进行更新,以确保控制参数能覆盖所有心跳任务的心跳控制需求。

步骤103、将主控周期tmain设置为所述tasknew的心跳周期tnew,以所述tmain为定时时长,启动主控定时器,根据所述tnew和所述tmain,设置所述tasknew的计数次数;执行步骤107。

本步骤中,设置所述tasknew的计数次数的具体方法如下:

将所述tasknew的计数次数设置为所述tnew和所述tmain比值的取整值。

具体而言,由于此时tnew和tmain是相同的,因此,这里tasknew的计数次数实际设置为1。

这里需要说明的是,本发明实施例中对于每个有心跳控制需求的应用,都需要为其对应的任务配置一个计数次数,之后,该计数次数将会在每次主控定时器超时时,进行相应的更新,以便基于该计数次数对相应心跳事件的触发进行控制。

步骤104、判断当前所述主控定时器超时,如果是,则执行步骤105;否则,执行步骤106。

本步骤中,考虑到此时主控定时器已启动,为了确保已有任务的心跳事件的准时执行,此时如果主控定时器超时,则需要转入步骤105先执行超时处理过程,再执行步骤106根据新增任务的心跳周期,对控制参数进行更新,否则,直接执行步骤106根据新增任务的心跳周期,对控制参数进行更新。

步骤105、执行超时处理过程,包括:以当前的所述tmain为定时时长,重启所述主控定时器;根据所述gtask中每个任务的所述计数次数,查找出当前需要执行心跳事件的任务,并执行相应的心跳事件;对所述gtask中每个任务的计数次数进行超时更新。

本步骤中,在执行超时处理的过程中,需要对所述gtask中每个任务的计数次数进行超时更新,以确保此后所述gtask中的每个任务能够在相应的心跳周期到达时,及时执行相应的心跳事件。

较佳地,本步骤中,可以采用下述方法根据所述gtask中每个任务的所述计数次数,查找出当前需要执行心跳事件的任务:

将所述gtask中计数次数为1的任务,确定为当前需要执行心跳事件的任务。

这里,如果任务的计数次数为1,说明当前到达相应任务的心跳事件执行时刻,因此,需要执行该任务的心跳事件。

较佳地,本步骤中,可以采用下述方法对所述gtask中每个任务的计数次数进行超时更新:

对所述gtask中的每个任务,如果该任务的计数次数为1,则将该任务的计数次数更新为该任务的心跳周期和当前所述tmain比值的取整值,否则,将该任务的计数次数减1。

步骤106、执行控制参数更新过程,包括:根据所述tnew和所述tmain,判断是否需要更新所述tmain,根据判断结果,对所述tmain和所述gtask中任务的计数次数进行相应更新。

较佳地,可以采用下述方法具体实现所述执行控制参数的更新过程:

如果所述tnew小于所述tmain,则将所述tmain更新为所述tnew,并且对于所述gtask中每个任务,将该任务的计数次数设置为该任务的心跳周期和所述tmain比值的取整值。

如果所述tnew大于或等于所述tmain,则将所述tasknew的计数次数设置为所述tnew和所述tmain比值的取整值。

上述更新过程中,如果所述tnew小于所述tmain,则将所述tmain更新为所述tnew,如此,可以使得tmain始终为所述gtask中所有任务的心跳周期中的最小值,而终端中的所述主控定时器的定时时长是由tmain决定的,从而可以确保可以满足所有任务的心跳事件的及时执行。

另外,上述更新过程中,对于一个任务,是将该任务的心跳周期和所述tmain比值进行取整后的结果,作为该任务的计数次数。这样,通过该方法,多个具有不同心跳周期的任务(例如心跳周期相接近的几个任务),有可能具有相同的计数次数,对于这些任务便可以在同一时刻触发心跳事件的执行,因此,相对于现有需要各应用分别触发心跳事件的方法,本申请可以有效减少cpu的唤醒次数。

步骤107、当所述主控定时器超时时,执行所述超时处理过程。

在上述方法中,当终端中的所述主控定时器超时时,将会统一触发当前需要执行心跳事件的任务,如此,在一次唤醒cpu时,可以触发多个心跳事件的执行,从而可以在确保每个任务的心跳事件都可以被及时触发的同时,有效减少了cpu被唤醒的次数,进而能够降低终端的心跳功耗,有效避免分别由每个应用独立控制心跳事件的执行所致的心跳功耗较大的问题。

与上述方法实施例相对应,本申请提供了一种心跳控制装置,设置于终端中,包括:处理器,所述处理器用于:

当终端中新增了需要心跳控制的应用时,将所述应用的心跳任务tasknew增加至当前的心跳任务集合gtask中;如果所述gtask中仅有一个任务,则将所述tasknew的心跳周期tnew设置为主控周期tmain,以所述tmain为定时时长,启动主控定时器,根据所述tnew和所述tmain,设置所述tasknew的计数次数;如果所述gtask中有至少两个任务且当前所述主控定时器超时,则在执行超时处理过程后,执行控制参数更新过程;如果所述gtask中有至少两个任务且当前所述主控定时器未超时,则直接执行所述控制参数更新过程;

当所述主控定时器超时时,执行所述超时处理过程;

所述超时处理过程包括:以当前的所述tmain为定时时长,重启所述主控定时器;根据所述gtask中每个任务的所述计数次数,查找出当前需要执行心跳事件的任务,并执行相应的心跳事件;对所述gtask中每个任务的计数次数进行超时更新;

所述控制参数更新过程包括:根据所述tnew和所述tmain,判断是否需要更新所述tmain,根据判断结果,对所述tmain和所述gtask中任务的计数次数进行相应更新。

较佳地,所述处理器具体用于:设置所述tasknew的计数次数,包括:

将所述tasknew的计数次数设置为所述tnew和所述tmain比值的取整值。

较佳地,所述处理器具体用于:根据所述gtask中每个任务的所述计数次数,查找出当前需要执行心跳事件的任务包括:

将所述gtask中计数次数为1的任务,确定为当前需要执行心跳事件的任务。

较佳地,所述处理器具体用于:对所述gtask中每个任务的计数次数进行超时更新,包括:

对所述gtask中的每个任务,如果该任务的计数次数为1,则将该任务的计数次数更新为该任务的心跳周期和所述tmain比值的取整值,否则,将该任务的计数次数减1。

较佳地,所述处理器具体用于:判断是否需要更新所述tmain,根据判断结果,对所述tmain和所述gtask中任务的计数次数进行相应更新,包括:

如果所述tnew小于所述tmain,则将所述tmain更新为所述tnew,并且对于所述gtask中每个任务,将该任务的计数次数设置为该任务的心跳周期和所述tmain比值的取整值;否则,将所述tasknew的计数次数设置为所述tnew和所述tmain比值的取整值。

本申请还公开了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上所述的心跳控制方法实施例的步骤。

本申请还公开了一种电子设备,包括如前所述的非易失性计算机可读存储介质、以及可访问所述非易失性计算机可读存储介质的所述处理器。

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

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