CN117407185A - 广播调度处理方法、装置、计算机设备以及存储介质 - Google Patents
广播调度处理方法、装置、计算机设备以及存储介质 Download PDFInfo
- Publication number
- CN117407185A CN117407185A CN202310466801.6A CN202310466801A CN117407185A CN 117407185 A CN117407185 A CN 117407185A CN 202310466801 A CN202310466801 A CN 202310466801A CN 117407185 A CN117407185 A CN 117407185A
- Authority
- CN
- China
- Prior art keywords
- broadcast
- application
- queue
- sub
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 claims description 34
- 238000004590 computer program Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请提供一种广播调度处理方法、装置、计算机设备以及存储介质,可应用于广播调度处理系统,广播调度处理包括至少两个广播处理线程以及分别与各广播处理线程对应的广播队列;通过接收发送方应用发送的第一广播消息;根据第一广播消息的广播配置信息确定第一广播消息的广播类型;在与各广播处理线程对应的广播队列中,确定与广播类型对应的广播子队列以及各广播子队列中的广播数量;从各广播子队列中确定广播数量满足预置条件的目标广播子队列以将第一广播消息发送至目标广播子队列。通过设置多个广播队列,在获取到第一广播消息后,将第一广播消息发送至广播类型相同、且待发送广播数量较少的广播队列中,提高第一广播消息的处理速度。
Description
技术领域
本申请涉及人工智能技术领域,具体涉及一种广播调度处理方法、装置、计算机设备以及存储介质。
背景技术
在安卓系统中,广播(Broadcast)是一种应用程序内或者应用程序之间的信息传输通信机制。在安卓系统中活动管理服务(Activity Manager Service,AMS)创建广播队列和广播处理线程进行广播消息的发送和接收等主要流程,广播处理线程每次从广播队列中拿出广播消息后,逐一发送给对应的接收方应用,当一个接收方应用处理完成后才发送给下一个接收方应用。
当出现大量的广播消息需要发送时,例如在系统开机阶段,会出现大量广播消息堆积在广播队列中等待处理,导致广播消息难以得到及时处理,应用程序的广播消息接收延迟,导致系统或应勇程序运行卡顿。
发明内容
基于此,有必要针对上述技术问题,提供一种广播调度处理方法、装置、计算机设备以及存储介质,用以提升系统以及应用程序的流畅度。
第一方面,本申请提供一种广播调度处理方法,应用于广播调度处理系统,所述广播调度处理系统包括至少两个广播处理线程以及分别与各所述广播处理线程对应的广播队列;该方法包括:
接收发送方应用发送的第一广播消息;
根据所述第一广播消息的广播配置信息确定所述第一广播消息的广播类型;
在与各所述广播处理线程对应的广播队列中,确定与所述广播类型对应的广播子队列以及各所述广播子队列中的广播数量;
基于各所述广播子队列中的广播数量,从各所述广播子队列中确定广播数量满足预置条件的目标广播子队列,以将所述第一广播消息发送至所述目标广播子队列。
在本申请一些实施例中,所述将所述第一广播消息发送至所述目标广播子队列的步骤之后,还包括:
获取当前系统负载信息;
若所述系统负载信息小于预设负载阈值时,拉起所述广播处理线程,并通过所述广播处理线程从所述广播处理线程对应的广播队列中获取第二广播消息;
获取所述第二广播消息的第一接收方应用,并查询所述第一接收方应用的应用状态;
若所述第一接收方应用的应用状态为正常状态,通过所述广播处理线程将所述第二广播消息发送至所述第一接收方应用。
在本申请一些实施例中,所述查询所述第一接收方应用的应用状态的步骤之后,还包括:
若所述第一接收方应用的应用状态为卡顿状态,获取所述第二广播消息的第二接收方应用以及所述第二接收方应用的应用状态;
若所述第二接收方应用的应用状态为正常状态,将第二广播消息发送至所述第二接收方应用,并重新执行查询所述第一接收方应用的应用状态的步骤。
在本申请一些实施例中,所述查询所述第一接收方应用的应用状态的步骤之后,还包括:
若所述第一接收方应用的应用状态为卡顿状态,从所述广播处理线程对应的广播队列中获取第三广播消息;
在完成所述第三广播消息的发送后,重新执行查询所述第一接收方应用的应用状态的步骤。
在本申请一些实施例中,所述查询所述第一接收方应用的应用状态的步骤,包括:
获取所述第一接收方应用对应主线程的待处理事件数量;
若所述待处理事件数量大于预设事件数量阈值,将所述第一接收方应用的应用状态确定为卡顿状态;
若所述待处理事件数量小于或等于预设事件数量阈值,将所述第一接收方应用的应用状态确定为正常状态。
在本申请一些实施例中,所述获取当前系统负载信息的步骤之后,还包括:
若所述系统负载信息大于或等于预设负载阈值时,在预设时间后拉起所述广播处理线程并从所述广播处理线程对应的广播队列中获取第一广播消息。
在本申请一些实施例中,所述广播队列包括前台广播子队列以及后台广播子队列。
第二方面,本申请提供一种广播调度处理装置,应用于广播调度处理系统,所述广播调度处理系统包括至少两个广播处理线程以及分别与各所述广播处理线程对应的广播队列;该装置包括:
广播消息接收模块,用于接收发送方应用发送的第一广播消息;
广播类型获取模块,用于根据所述第一广播消息的广播配置信息确定所述第一广播消息的广播类型;
广播数量获取模块,用于在与各所述广播处理线程对应的广播队列中,确定与所述广播类型对应的广播子队列以及各所述广播子队列中的广播数量;
广播存储模块,用于基于各所述广播子队列中的广播数量,从各所述广播子队列中确定广播数量满足预置条件的目标广播子队列,以将所述第一广播消息发送至所述目标广播子队列。
第三方面,本申请还提供一种计算机设备,计算机设备包括:一个或多个处理器;存储器;以及一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现广播调度处理方法。
第四方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行广播调度处理方法中的步骤。
上述广播调度处理方法、装置、计算机设备以及存储介质,可应用于广播调度处理系统,广播调度处理包括至少两个广播处理线程以及分别与各广播处理线程对应的广播队列;通过接收发送方应用发送的第一广播消息;根据第一广播消息的广播配置信息确定第一广播消息的广播类型;在与各广播处理线程对应的广播队列中,确定与广播类型对应的广播子队列以及各广播子队列中的广播数量;确定广播数量最少的目标广播子队列,并将第一广播消息发送至目标广播子队列。通过设置多个广播队列,在获取到发送方应用发送的第一广播消息后,将第一广播消息发送至广播类型相同、且待发送广播数量较少的广播子队列中,以提高第一广播消息的处理速度,减少广播消息的处理等待时长,提升系统以及应用程序的流畅度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例中广播调度处理方法的场景示意图;
图2是本申请实施例中广播调度处理方法的流程示意图;
图3是本申请实施例中广播调度处理系统的示意图;
图4是本申请实施例中广播消息发送步骤的流程示意图;
图5是本申请实施例中广播调度处理系统的流程示意图;
图6是本申请实施例中广播调度处理装置的结构示意图;
图7是本申请实施例中计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请的描述中,“例如”一词用来表示“用作例子、例证或说明”。本申请中被描述为“例如”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
本申请实施例提供的广播调度处理方法,可以应用于如图1所示的广播调度处理系统100中,其中,该广播调度处理系统100包括至少两个广播处理线程110以及分别与各广播处理线程对应的广播队列120;具体地,发送方应用发送的第一广播消息至广播调度处理系统100,广播调度处理系统100接收到第一广播消息后,可通过广播处理控制器130根据第一广播消息的广播配置信息确定第一广播消息的广播类型;在与各广播处理线程110对应的广播队列120中,确定与广播类型对应的广播子队列以及各广播子队列中的广播数量;基于各所述广播子队列中的广播数量,从各所述广播子队列中确定广播数量满足预置条件的目标广播子队列,以将所述第一广播消息发送至所述目标广播子队列。
还需说明的是,图1所示广播调度处理系统的场景示意图仅仅是一个示例,本发明实施例描述的广播调度处理系统以及场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着广播调度处理系统的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
参阅图2,本申请实施例提供了一种广播调度处理方法,主要以该方法应用于上述图1中的广播调度处理器来举例说明,该方法包括步骤S210至S230,具体如下:
步骤S210,接收发送方应用发送的第一广播消息。
在广播机制中,广播消息是指系统或者应用程序在运行过程中发送的、用于系统和/或应用程序之间传输消息的数据信息;例如,广播消息可以是系统启动广播消息、短信类广播消息、电话类广播消息或者三方应用类广播消息等。其中,发送方应用是指产生并发送广播消息的应用程序。
具体地,发送方应用可通过其服务进程调用广播发送函数将广播消息发送至活动管理服务(ActivityManagerService,AMS),可以理解的是,活动管理服务至少创建有两个广播处理线程及其对应的广播队列,在接收到应用发送方发送的广播消息后,可将该广播消息保存至广播队列中,后续通过广播线程将广播队列中的广播消息基于通信机制发送至接收方应用程序。
步骤S220,根据第一广播消息的广播配置信息确定第一广播消息的广播类型。
其中,广播配置信息用于标识广播类型的信息数据;具体地,广播消息包括前台广播消息以及后台广播消息,前台广播消息是指前台应用程序产生的广播消息,后台广播消息是指后台应用程序产生的广播消息。发送方应用在发送第一广播消息时,可在第一广播消息中增加一广播配置信息以标识该广播的广播类型。
具体地,广播调度处理器在接收到发送方应用发送的第一广播消息后,可解析第一广播消息中的广播配置信息,进而基于该广播配置信息确定第一广播消息的广播类型。
步骤S230,在与各广播处理线程对应的广播队列中,获取与广播类型对应的多个广播子队列以及各广播子队列中的广播数量。
其中,针对不同广播类型的广播消息,与各个广播处理线程对应的广播队列均包括不同广播类型对应的广播子队列;以广播类型包括前台广播消息以及后台广播消息为例,各个广播处理线程对应的广播队列均包括前台广播子队列以及后台广播子队列;参见图3,图3示出了广播调度处理系统的示意图,其中,广播调度处理系统包括广播处理线程A、广播处理线程B、与广播处理线程A对应的广播队列A以及与广播处理线程B对应的广播队列B,其中,广播队列A包括前台广播子队列A以及后台广播子队列A,广播队列B包括前台广播子队列B以及后台广播子队列B。
在确定到第一广播消息的广播类型后,可以确定各个广播队列中与第一广播消息的广播类型对应的广播子队列,并查询这些广播子队列中的广播数量;可以理解的是,广播数量是指该广播子队列中待发送广播消息的数量。
步骤S240,基于各广播子队列中的广播数量,从各广播子队列中确定广播数量满足预置条件的目标广播子队列,以将第一广播消息发送至目标广播子队列。
在获取到与第一广播消息的广播类型对应的广播子队列中的广播数量后,从中确定满足预置条件的目标广播子队列,并将第一广播消息发送至该目标广播子队列。具体地,预置条件可以是广播数量最少,即可以从各个广播子队列中确定广播数量最少的广播子队列作为目标广播子队列;预置条件也可以是广播数量小于预设阈值,即可以从各个广播子队列中确定其广播数量小于预设阈值的任意广播子队列作为目标广播子队列;预置条件还可以是广播数量小于预设阈值且广播子队列对应广播队列的队列标识最小,即可从各个广播子队列中确定其广播数量小于预设阈值的候选广播子队列,进而在候选广播子队列中确定对应队列标识最小的候选广播子队列作为目标广播子队列。
继续以图3所示的广播调度处理系统为例,例如,预置条件为广播数量最少,假设第一广播消息的广播类型为前台广播,在确定到第一广播消息为前台广播消息后,可从广播队列A以及广播队列B中确定与前台广播消息这一广播类型对应的前台广播子队列A以及前台广播子队列B,并获取前台广播子队列A中的待发送广播消息的广播数量以及前台广播子队列B中的待发送广播消息的广播数量;当前台广播子队列A中的广播数量最少时,可将前台广播子队列A确定为目标广播子队列,将第一广播消息发送至前台广播子队列A中。
又例如,预置条件为广播数量小于预设阈值且广播子队列对应广播队列的队列标识最小,假设广播队列A的队列标识为1,广播队列B的队列标识为2,第一广播消息的广播类型为前台广播;在确定到第一广播消息为前台广播消息后,可从广播队列A以及广播队列B中确定与前台广播消息这一广播类型对应的前台广播子队列A以及前台广播子队列B,并获取前台广播子队列A中的待发送广播消息的广播数量以及前台广播子队列B中的待发送广播消息的广播数量;当前台广播子队列A中的广播数量均小于预设阈值、而广播子队列B中的广播数量大于或等于时预设阈值,可将前台广播子队列A确定为目标广播子队列;当前台广播子队列A以及广播子队列B中的广播数量均小于预设阈值时,可将前台广播子队列A(其对应的队列标识为1,为最小队列标识)确定为目标广播子队列。
上述广播调度处理方法中,广播调度处理系统包括至少两个广播处理线程以及分别与各广播处理线程对应的广播队列;通过接收发送方应用发送的第一广播消息;根据第一广播消息的广播配置信息确定第一广播消息的广播类型;在与各广播处理线程对应的广播队列中,确定与广播类型对应的广播子队列以及各广播子队列中的广播数量;确定广播数量最少的目标广播子队列,并将第一广播消息发送至目标广播子队列。通过设置多个广播队列,在获取到发送方应用发送的第一广播消息后,将第一广播消息发送至广播类型相同、且待发送广播数量较少的广播子队列中,以提高第一广播消息的处理速度,减少广播处理的等待时长,提升系统、应用的流畅度。
进一步地,在一个实施例中,如图4所示,将第一广播消息发送至目标广播子队列的步骤之后,还包括:
步骤S410,获取当前系统负载信息。
其中,系统负载信息具体可以是CPU、内存、I/O等状态信息,例如CPU使用率、CPU剩余量、内存使用率、内存剩余量、I/O使用率等。
步骤S420,若系统负载信息小于预设负载阈值时,拉起广播处理线程,并通过广播处理线程从广播处理线程对应的广播队列中获取第二广播消息。
其中,广播处理线程用于每次从广播队列中获取一个待处理的广播消息并发送至接收方应用。
其中,当系统负载信息大于或等于预设负载阈值,可认为系统负载过大,此时拉取广播处理线程往往会造成系统负载过高导致系统卡顿加剧;当系统负载信息小于预设负载阈值,可认为系统中有空闲资源用于拉取广播处理线程以及通过广播处理线程处理广播消息。
具体地,在获取到当前的系统负载信息后,可以对比当前的系统负载信息中的CPU使用率与CPU使用阈值,当CPU使用率小于CPU使用率阈值,则确定系统负载未过载,此时可拉起广播处理线程;还可以对比当前的系统负载信息中的内存使用率与内存使用阈值,当内存使用率小于内存使用阈值,则确定系统负载未过载,此时可拉起广播处理线程。在拉起广播处理线程后,可通过广播处理线程从与其对应的广播队列中获取第二广播消息。继续以图3所示的广播调度处理系统为例,在确定到系统负载信息小于预设负载阈值时,此时可拉起广播处理线程A以及广播处理线程B,广播处理线程A从前台广播子队列A或后台广播子队列A中取出一个广播消息,同时,广播处理线程B也从前台广播子队列B或后台广播子队列B取出一个广播消息。
进一步地,所述获取当前系统负载信息的步骤之后,还包括:若所述系统负载信息大于或等于预设负载阈值时,设置定时器;在定时器完成计时后,拉起所述广播处理线程并从所述广播处理线程对应的广播队列中获取第一广播消息。通过设置定时器,以在定时器完成计时后再拉起广播处理线程进行广播消息的发送,实现动态配置广播消息发送策略,在系统负载过高时暂缓广播消息的发送,避免因广播消息的处理、广播处理线程的拉起等情况导致系统卡顿加剧。
步骤S430,获取第二广播消息的第一接收方应用,并查询第一接收方应用的应用状态。
其中,接收方应用是指接收广播消息的应用程序;接收方应用的应用状态用于表示接收方应用当前对广播消息的处理能力,具体地,应用状态可包括正常状态以及卡顿状态,可通过查询接收方应用中主线程的未处理事件或查询接收方应用的卡顿情况以确定其应用情况。
在一个实施例中,查询第一接收方应用的应用状态的步骤,包括:获取第一接收方应用对应主线程的待处理事件数量;若待处理事件数量大于预设事件数量阈值,将第一接收方应用的应用状态确定为卡顿状态;若待处理事件数量小于或等于预设事件数量阈值,将第一接收方应用的应用状态确定为正常状态。其中,当待处理事件数量大于预设事件阈值,此时,第一接收方应用处于卡顿状态,第一接收方应用接收到广播消息时,第一接收方应用往往无法及时处理该广播消息,导致广播处理线程等待而无法向下一个接收方应用的发送第二广播消息或处理下一个广播消息;当待处理事件数量小于或等于预设事件阈值,此时,第一接收方应用处于正常状态,第一接收方应用接收到广播消息时,第一接收方应用可正常处理该广播消息,避免广播处理线程等待。
在获取到第二广播消息后,可获取第二广播消息的第一接收方应用,并查询第一接收方应用的应用状态。
步骤S440,若第一接收方应用的应用状态为正常状态,通过广播处理线程将第二广播消息发送至第一接收方应用。
在确定到第一接收方应用的应用状态为正常状态时,可通过广播处理线程将第二广播消息发送至第一接收方应用。通过获取接收方应用的应用状态,在应用状态为正常状态时,才将第二广播消息发送至第一接收方应用,避免将广播消息发送至处于卡顿状态的第一接收方应用,避免第一接收方应用长时间不处理广播消息而导致广播处理线程等待,减少广播消息处理的等待,提高广播消息处理速度。
进一步地,在一个实施例中,查询第一接收方应用的应用状态的步骤之后,还包括:若第一接收方应用的应用状态为卡顿状态,获取第二广播消息的第二接收方应用以及第二接收方应用的应用状态;若第二接收方应用的应用状态为正常状态,将第二广播消息发送至第二接收方应用,并重新执行查询第一接收方应用的应用状态的步骤。
具体地,在确定到第一接收方应用的应用状态为卡顿状态时,可以获取第二广播消息的第二接收方应用,第二接收方应用区别于第一接收方应用,通过查询第二接收方应用的应用状态,若第二接收方应用的应用状态为正常状态,可将第二广播消息发送至第二接收方应用,使得第二广播消息跳过对第一接收方应用的广播消息发送,以处理对下一个接收方应用的广播消息发送,避免第一接收方应用长时间未处理第二广播消息而导致广播处理线程等待。
可以理解的是,可在完成将第二广播消息发送至第二接收方应用后,再查询第一接收方应用的应用状态,在第一接收方应用的应用状态为正常状态时将第二广播消息发送至第二接收方应用。
进一步地,在一个实施例中,查询第一接收方应用的应用状态的步骤之后,还包括:若第一接收方应用的应用状态为卡顿状态,从广播处理线程对应的广播队列中获取第三广播消息;在完成第三广播消息的发送后,重新执行查询第一接收方应用的应用状态的步骤。
其中,在第二广播消息的接收方应用仅包括第一接收方应用而无其他接收方应用时,第一接收方应用的应用状态为卡顿状态,可跳过对第二广播消息的发送,而从广播队列中获取下一条广播消息,即第三广播消息,进行第三广播消息的发送;在完成第三广播消息的发送后,再优先处理第二广播消息的发送。
可以理解的是,第三广播消息的发送过程与第二广播消息的过程相同,具体地,可获取第三广播消息的第一应用接收方,并查询第三广播消息对应第一应用接收方的应用状态;若第三广播消息对应第一应用接收方的应用状态为正常状态,通过广播处理线程将第三广播消息发送至该第一接收方应用;若第三广播消息对应第一应用接收方的应用状态为卡顿状态,获取第三广播消息的第二接收方应用,并查询第三广播消息对应第一应用接收方的应用状态;若第三广播消息对应第一应用接收方的应用状态为正常状态,将第三广播消息发送至该第二接收方应用。
以下,结合一具体应用场景对上述广播调度处理方法进行进一步说明。具体地,如图3所示广播调度处理系统,广播调度处理系统包括广播处理线程A、广播处理线程B、与广播处理线程A对应的广播队列A以及与广播处理线程B对应的广播队列B,其中,广播队列A包括前台广播子队列A以及后台广播子队列A,广播队列B包括前台广播子队列B以及后台广播子队列B。
在广播消息接收过程中,如图5所示,发送方应用(具体也可表现为一个进程),如图5中的应用程序2,可通过发送广播函数(如SendBroadcast)发送广播消息到广播调度处理系统,广播调度处理系统中的广播处理控制器可判断广播消息的广播类型,并统计各个广播队列中的广播数量,以为该广播消息分配广播队列;具体地,结合图3所示,广播处理控制器接收到广播消息后,可根据广播消息的广播配置信息,以判断该该广播消息的广播类型为前台广播消息还是后台广播消息;假设该广播消息的广播类型为前台广播消息,在确定到广播消息为前台广播消息后,可从广播队列A以及广播队列B中确定与前台广播消息这一广播类型对应的前台广播子队列A以及前台广播子队列B,并获取前台广播子队列A中的待发送广播消息的广播数量、以及前台广播子队列B中的待发送广播消息的广播数量;当前台广播子队列A中的广播数量最少时,可将前台广播子队列A确定为目标广播子队列,将第一广播消息发送至前台广播子队列A中。
此外,广播处理控制器还可以获取系统负载信息,以根据系统负载信息配置广播消息发送策略;其中,系统负载信息包括但不限于CPU状态、内存状态、I/O状态等。具体地,当系统负载信息小于预设负载阈值时,如CPU使用率小于预设CPU使用率,可立即拉起广播处理线程(如图3中的广播处理线程A以及广播处理线程B);若系统负载信息大于或等于预设负载阈值时,可停止广播消息的处理,在预设时间后再拉起广播处理线程,进行广播消息的处理。
在拉起广播处理线程后,通过广播处理线程从其对应的广播队列的广播子队列中获取广播消息,同时,广播处理控制器还可以进行应用状态检测,以查询广播消息对应接收方应用的应用状态,进而根据接收方应用的应用状态调整广播消息的发送顺序,例如,跳过某个接收方应用先向其他接收方应用发送广播消息。具体地,广播处理控制器判断当前的发送对象,如第一接收方应用,是否处于卡顿状态;若当前的发送对象第一接收方应用处于正常状态,则将广播消息发送至第一接收方应用,若当前的发送对象第一接收方应用处于卡顿状态,则跳过对其进行第二广播消息的发送,而获取下一个发送对象第二接收方应用以及第二接收方应用的应用状态,若当前的发送对象第二接收方应用处于正常状态,则将广播消息发送至第二接收方应用,若当前的发送对象第二接收方应用处于卡顿状态,则再次跳过对其进行第二广播消息的发送,以获取再下一个接收对象,如此类推。继续结合图3中的广播处理线程B为例,广播处理线程B从其对应的广播队列B中获取广播消息,同时,广播处理控制器还可以进行应用状态检测,以查询第二广播消息对应接收方应用1以及接收方应用2的应用状态,以判断当前的发送对象接收方应用是否处于卡顿状态;若当前的发送对象,如接收方应用1,处于正常状态,则将第二广播消息发送至接收方应用1,若接收方应用1处于卡顿状态,则跳过对接收方应用1进行第二广播消息的发送,而获取下一个发送对象,如接收方应用2,以及接收方应用2的应用状态,若接收方应用2处于正常状态,则将第二广播消息发送至接收方应用,若接收方应用2也处于卡顿状态,则再次跳过对接收方应用2进行第二广播消息的发送,以获取再下一个接收对象。
当第二广播消息对应接收方应用的应用状态均处于卡顿状态,可以跳过对第二广播消息的发送,从广播队列中获取下一个广播消息(即第三广播消息),在完成第三广播消息的发送后,重新执行查询第一接收方应用的应用状态的步骤,以完成第二广播消息的发送。
为了更好实施本申请实施例提供的广播调度处理方法,在本申请实施例所提广播调度处理方法的基础之上,本申请实施例中还提供一种广播调度处理装置,如图6所示,广播调度处理装置600包括:
广播消息接收模块610,用于接收发送方应用发送的第一广播消息;
广播类型获取模块620,用于根据第一广播消息的广播配置信息确定第一广播消息的广播类型;
广播数量获取模块630,用于在与各广播处理线程对应的广播队列中,确定与广播类型对应的广播子队列以及各广播子队列中的广播数量;
广播存储模块640,用于基于各广播子队列中的广播数量,从各广播子队列中确定广播数量满足预置条件的目标广播子队列,以将所述第一广播消息发送至所述目标广播子队列。
在本申请一些实施例中,广播调度处理装置600还包括广播发送模块,用于获取当前系统负载信息;若系统负载信息小于预设负载阈值时,拉起广播处理线程,并通过广播处理线程从广播处理线程对应的广播队列中获取第二广播消息;获取第二广播消息的第一接收方应用,并查询第一接收方应用的应用状态;若第一接收方应用的应用状态为正常状态,通过广播处理线程将第二广播消息发送至第一接收方应用。
在本申请一些实施例中,广播发送模块,还用于若第一接收方应用的应用状态为卡顿状态,获取第二广播消息的第二接收方应用以及第二接收方应用的应用状态;若第二接收方应用的应用状态为正常状态,将第二广播消息发送至第二接收方应用,并重新执行查询第一接收方应用的应用状态的步骤。
在本申请一些实施例中,广播发送模块,还用于若第一接收方应用的应用状态为卡顿状态,从广播处理线程对应的广播队列中获取第三广播消息;在完成第三广播消息的发送后,重新执行查询第一接收方应用的应用状态的步骤。
在本申请一些实施例中,广播发送模块,具体用于获取第一接收方应用对应主线程的待处理事件数量;若待处理事件数量大于预设事件数量阈值,将第一接收方应用的应用状态确定为卡顿状态;若待处理事件数量小于或等于预设事件数量阈值,将第一接收方应用的应用状态确定为正常状态。
在本申请一些实施例中,广播发送模块,具体用于若系统负载信息大于或等于预设负载阈值时,在预设时间后拉起广播处理线程并从广播处理线程对应的广播队列中获取第一广播消息。
在本申请一些实施例中,广播队列包括前台广播子队列以及后台广播子队列。
在本申请一些实施例中,广播调度处理装置600可以实现为一种计算机程序的形式,计算机程序可在如图7所示的计算机设备上运行。计算机设备的存储器中可存储组成该广播调度处理装置600的各个程序模块,比如,图6所示的广播消息接收模块610、广播类型获取模块620、广播数量获取模块630以及广播存储模块640。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的广播调度处理方法中的步骤。
例如,图7所示的计算机设备可以通过如图6所示的广播调度处理装置600中的广播消息接收模块610执行步骤S210。计算机设备可通过广播类型获取模块620执行步骤S220。计算机设备可通过广播数量获取模块630执行步骤S230。计算机设备可通过广播存储模块640执行步骤S240。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的计算机设备通过网络连接通信。该计算机程序被处理器执行时以实现一种广播调度处理方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在本申请一些实施例中,提供了一种计算机设备,包括一个或多个处理器;存储器;以及一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行上述广播调度处理方法的步骤。此处广播调度处理方法的步骤可以是上述各个实施例的广播调度处理方法中的步骤。
在本申请一些实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器进行加载,使得处理器执行上述广播调度处理方法的步骤。此处广播调度处理方法的步骤可以是上述各个实施例的广播调度处理方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上对本申请实施例所提供的一种广播调度处理方法、装置、计算机设备以及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种广播调度处理方法,其特征在于,应用于广播调度处理系统,所述广播调度处理系统包括至少两个广播处理线程以及分别与各所述广播处理线程对应的广播队列;所述方法包括:
接收发送方应用发送的第一广播消息;
根据所述第一广播消息的广播配置信息确定所述第一广播消息的广播类型;
在与各所述广播处理线程对应的广播队列中,确定与所述广播类型对应的广播子队列以及各所述广播子队列中的广播数量;
基于各所述广播子队列中的广播数量,从各所述广播子队列中确定广播数量满足预置条件的目标广播子队列,以将所述第一广播消息发送至所述目标广播子队列。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一广播消息发送至所述目标广播子队列的步骤之后,还包括:
获取当前系统负载信息;
若所述系统负载信息小于预设负载阈值时,拉起所述广播处理线程,并通过所述广播处理线程从所述广播处理线程对应的广播队列中获取第二广播消息;
获取所述第二广播消息的第一接收方应用,并查询所述第一接收方应用的应用状态;
若所述第一接收方应用的应用状态为正常状态,通过所述广播处理线程将所述第二广播消息发送至所述第一接收方应用。
3.根据权利要求2所述的方法,其特征在于,所述查询所述第一接收方应用的应用状态的步骤之后,还包括:
若所述第一接收方应用的应用状态为卡顿状态,获取所述第二广播消息的第二接收方应用以及所述第二接收方应用的应用状态;
若所述第二接收方应用的应用状态为正常状态,将第二广播消息发送至所述第二接收方应用,并重新执行查询所述第一接收方应用的应用状态的步骤。
4.根据权利要求2所述的方法,其特征在于,所述查询所述第一接收方应用的应用状态的步骤之后,还包括:
若所述第一接收方应用的应用状态为卡顿状态,从所述广播处理线程对应的广播队列中获取第三广播消息;
在完成所述第三广播消息的发送后,重新执行查询所述第一接收方应用的应用状态的步骤。
5.根据权利要求2所述的方法,其特征在于,所述查询所述第一接收方应用的应用状态的步骤,包括:
获取所述第一接收方应用对应主线程的待处理事件数量;
若所述待处理事件数量大于预设事件数量阈值,将所述第一接收方应用的应用状态确定为卡顿状态;
若所述待处理事件数量小于或等于预设事件数量阈值,将所述第一接收方应用的应用状态确定为正常状态。
6.根据权利要求2所述的方法,其特征在于,所述获取当前系统负载信息的步骤之后,还包括:
若所述系统负载信息大于或等于预设负载阈值时,设置定时器;
在定时器完成计时后,拉起所述广播处理线程并从所述广播处理线程对应的广播队列中获取第一广播消息。
7.根据权利要求1至6任意一项所述方法,其特征在于,所述广播队列包括前台广播子队列以及后台广播子队列。
8.一种广播调度处理装置,其特征在于,应用于广播调度处理系统,所述广播调度处理系统包括至少两个广播处理线程以及分别与各所述广播处理线程对应的广播队列;所述装置包括:
广播消息接收模块,用于接收发送方应用发送的第一广播消息;
广播类型获取模块,用于根据所述第一广播消息的广播配置信息确定所述第一广播消息的广播类型;
广播数量获取模块,用于在与各所述广播处理线程对应的广播队列中,确定与所述广播类型对应的广播子队列以及各所述广播子队列中的广播数量;
广播存储模块,用于基于各所述广播子队列中的广播数量,从各所述广播子队列中确定广播数量满足预置条件的目标广播子队列,以将所述第一广播消息发送至所述目标广播子队列。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现权利要求1至7中任一项所述的广播调度处理方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行权利要求1至7任一项所述的广播调度处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310466801.6A CN117407185A (zh) | 2023-04-23 | 2023-04-23 | 广播调度处理方法、装置、计算机设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310466801.6A CN117407185A (zh) | 2023-04-23 | 2023-04-23 | 广播调度处理方法、装置、计算机设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117407185A true CN117407185A (zh) | 2024-01-16 |
Family
ID=89498840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310466801.6A Pending CN117407185A (zh) | 2023-04-23 | 2023-04-23 | 广播调度处理方法、装置、计算机设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407185A (zh) |
-
2023
- 2023-04-23 CN CN202310466801.6A patent/CN117407185A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699218B (zh) | 一种任务管理方法及设备 | |
EP3376379A1 (en) | Task management methods and system, and computer storage medium | |
CN108134814B (zh) | 一种业务数据处理方法及装置 | |
CN111045810B (zh) | 一种任务调度处理方法及装置 | |
CN109766172B (zh) | 一种异步任务调度方法以及装置 | |
CN107346263B (zh) | 任务执行方法、存储介质以及计算机设备 | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
CN114461385A (zh) | 线程池调度方法、装置、设备以及可读存储介质 | |
CN113064740A (zh) | 一种消息处理方法和装置 | |
CN112817772B (zh) | 一种数据通信方法、装置、设备及存储介质 | |
CN109388501B (zh) | 基于人脸识别请求的通信匹配方法、装置、设备及介质 | |
CN113835905B (zh) | 一种消息队列负载均衡方法、装置、电子设备及介质 | |
CN102984083A (zh) | 队列管理方法及装置 | |
CN109062650B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN117407185A (zh) | 广播调度处理方法、装置、计算机设备以及存储介质 | |
CN110275780B (zh) | 用于限制流量的方法和装置 | |
CN109005465B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN110769046B (zh) | 一种报文获取方法、装置、电子设备及机器可读存储介质 | |
CN112988422B (zh) | 一种异步消息处理方法、装置、电子设备及存储介质 | |
CN109086107B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN114461323A (zh) | 一种卡顿处理方法、装置、电子设备及存储介质 | |
CN114443241A (zh) | 一种任务动态调度方法、任务下发方法及其装置 | |
CN109413489B (zh) | 串行式的多线程弹幕分发方法、装置、设备和存储介质 | |
CN109379605B (zh) | 基于弹幕顺序的弹幕分发方法、装置、设备和存储介质 | |
CN113391927A (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 |