CN115037702B - 报文分发、数据发送方法及设备 - Google Patents

报文分发、数据发送方法及设备 Download PDF

Info

Publication number
CN115037702B
CN115037702B CN202210562620.9A CN202210562620A CN115037702B CN 115037702 B CN115037702 B CN 115037702B CN 202210562620 A CN202210562620 A CN 202210562620A CN 115037702 B CN115037702 B CN 115037702B
Authority
CN
China
Prior art keywords
task
target
message
sending
data
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
Application number
CN202210562620.9A
Other languages
English (en)
Other versions
CN115037702A (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.)
Beijing Wutong Chelian Technology Co Ltd
Original Assignee
Beijing Wutong Chelian Technology 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 Beijing Wutong Chelian Technology Co Ltd filed Critical Beijing Wutong Chelian Technology Co Ltd
Priority to CN202210562620.9A priority Critical patent/CN115037702B/zh
Publication of CN115037702A publication Critical patent/CN115037702A/zh
Application granted granted Critical
Publication of CN115037702B publication Critical patent/CN115037702B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2475Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了报文分发、数据发送方法及设备,属于数据处理技术领域。该方法包括:获取待分发的至少一个报文;生成报文对应的至少一个发送任务;响应于至少一个发送任务中包含目标任务,将目标任务加入对应的线程池,将非目标任务加入对应的任务队列,目标任务为需要保证被执行的发送任务,非目标任务为至少一个发送任务中除了目标任务外的发送任务;基于线程池包含的线程执行目标任务,以使目标任务对应的报文发往目标任务对应的接收对象,基于任务队列对应的线程执行非目标任务,以使非目标任务对应的报文发往非目标任务对应的接收对象。通过将目标任务加入对应的线程池进行分发,使得目标任务对应的接收对象不会丢失相应的报文。

Description

报文分发、数据发送方法及设备
技术领域
本申请实施例涉及数据处理技术领域,特别涉及一种报文分发、数据发送方法及设备。
背景技术
在数据处理技术领域中,报文分发是数据传输过程中的重要环节。
在相关技术中,报文的分发基于安卓(Android)原生的Nmea(National MarineElectronics Association,国际海洋电子协会)报文分发逻辑进行。基于Nmea报文分发逻辑分发报文时,首先需要确定Nmea报文需要发往的接收对象,然后生成将该Nmea报文发往该接收对象的发送任务,再将该发送任务送入对应的队列中进行排队,当轮到该发送任务后执行该发送任务,完成将Nmea报文发送到对应的接收对象。
然而,在基于Nmea报文分发逻辑分发报文时,生成的发送任务存在因队列已满无法入队的问题,进而使得需要该报文的接收对象丢失相应的报文。因此,基于Nmea报文分发逻辑分发报文存在易丢失报文的问题,可靠性不高。
发明内容
本申请实施例提供了一种报文分发、数据发送方法及设备,可用于解决相关技术中的问题。所述技术方案如下:
一方面,本申请实施例提供了一种报文分发方法,所述方法包括:
获取待分发的至少一个报文;
生成所述报文对应的至少一个发送任务;
响应于所述至少一个发送任务中包含目标任务,将所述目标任务加入针对于所述目标任务建立的线程池,将非目标任务加入对应的任务队列,所述目标任务为所述至少一个发送任务中需要保证被执行的发送任务,所述非目标任务为所述至少一个发送任务中除了所述目标任务外的发送任务;
基于所述线程池包含的线程执行所述目标任务,以使所述目标任务对应的报文发往所述目标任务对应的接收对象,基于所述任务队列对应的线程执行所述非目标任务,以使所述非目标任务对应的报文发往所述非目标任务对应的接收对象。
在一种可能的实现方式中,所述响应于所述至少一个发送任务中包含目标任务,将所述目标任务加入针对于所述目标任务建立的线程池之前,还包括:
确定所述至少一个发送任务对应的接收对象中包括的目标对象,所述目标对象为需要保证接收到报文的对象;
基于所述目标对象,从所述至少一个发送任务中确定出所述目标任务。
在一种可能的实现方式中,所述接收对象用于为目标应用程序服务,所述基于所述目标对象,从所述至少一个发送任务中确定出所述目标任务,包括:
响应于任一报文包含的数据为所述目标对象所服务的目标应用程序所需的数据,确定所述目标对象对应的发送任务为所述目标任务。
在一种可能的实现方式中,所述确定所述至少一个发送任务对应的接收对象中包括的目标对象,包括:
获取所述至少一个发送任务对应的接收对象的标识;获取至少一个目标对象的标识;
将所述至少一个发送任务对应的接收对象的标识与所述至少一个目标对象对应的标识进行匹配,得到匹配结果;
基于所述匹配结果,确定所述至少一个发送任务对应的接收对象中包括的目标对象。
在一种可能的实现方式中,所述响应于任一报文包含的数据为所述目标对象所服务的目标应用程序所需的数据,确定所述目标对象对应的发送任务为所述目标任务之前,还包括:
确定所述目标对象所服务的目标应用程序所需的数据的第一数据类型;
识别所述至少一个报文中的各个报文包含的数据所属的第二数据类型;
响应于任一报文包含的数据所属的第二数据类型与所述第一数据类型匹配,确定所述任一报文包含的数据为所述目标对象所服务的目标应用程序所需的数据。
另一方面,提供了一种数据发送方法,所述方法包括:
基于接收对象接收包含数据的报文;
响应于所述数据为所述接收对象所服务的目标应用程序所需的数据,解析所述报文,得到所述数据;
生成将所述数据发往所述目标应用程序的发送任务;
将所述发送任务加入与所述目标应用程序对应的线程;
对所述线程执行所述发送任务的时间进行正态分布动态矫正;
基于执行了正态分布动态矫正后的所述线程执行所述发送任务,以使所述数据发往所述目标应用程序。
在一种可能的实现方式中,所述数据为惯导数据,所述对所述线程执行所述发送任务的时间进行正态分布动态矫正,包括:对所述线程执行所述发送任务的时间进行正态分布动态延迟,所述发送任务的内容为将所述惯导数据发往需要所述惯导数据的目标应用程序。
在一种可能的实现方式中,所述对所述线程执行所述发送任务的时间进行正态分布动态延迟,包括:对所述线程执行所述发送任务的时间延迟第一时长,所述第一时长由第一参考时长与调用时长的差值确定,所述第一参考时长由需要所述惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,所述调用时长为所述线程将上一帧惯导数据发送到需要惯导数据的目标应用程序所用的时长。
在一种可能的实现方式中,所述对所述线程执行所述发送任务的时间延迟第一时长之后,还包括:响应于对所述线程执行所述发送任务的时间延迟所述第一时长后,所述线程中没有需要执行的发送任务,重新对所述线程执行发送任务的时间延迟所述第一时长,以使在重新延迟期间加入所述线程的发送任务在重新延迟后被执行。
在一种可能的实现方式中,所述对所述线程执行所述发送任务的时间延迟第一时长之后,还包括:响应于第一时间与第二时间的间隔小于第二参考时长,对所述线程执行所述发送任务的时间延迟第二时长,所述第二参考时长由需要所述惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,所述第二时长由所述第二参考时长与所述间隔的差值确定,所述第一时间为所述线程执行所述发送任务的时间延迟所述第一时长后对应的时间,所述第二时间为所述线程将上一帧惯导数据发往需要惯导数据的目标应用程序的时间。
另一方面,提供了一种报文分发装置,所述装置包括:
获取模块,用于获取待分发的至少一个报文;
生成模块,用于生成所述报文对应的至少一个发送任务;
添加模块,用于响应于所述至少一个发送任务中包含目标任务,将所述目标任务加入针对于所述目标任务建立的线程池,将非目标任务加入对应的任务队列,所述目标任务为所述至少一个发送任务中需要保证被执行的发送任务,所述非目标任务为所述至少一个发送任务中除了所述目标任务外的发送任务;
发送模块,用于基于所述线程池包含的线程执行所述目标任务,以使所述目标任务对应的报文发往所述目标任务对应的接收对象,基于所述任务队列对应的线程执行所述非目标任务,以使所述非目标任务对应的报文发往所述非目标任务对应的接收对象。
在一种可能的实现方式中,所述装置还包括:
第一确定模块,用于确定所述至少一个发送任务对应的接收对象中包括的目标对象,所述目标对象为需要保证接收到报文的对象;
第二确定模块,用于基于所述目标对象,从所述至少一个发送任务中确定出所述目标任务。
在一种可能的实现方式中,所述接收对象用于为目标应用程序服务,所述第二确定模块,用于响应于任一报文包含的数据为所述目标对象所服务的目标应用程序所需的数据,确定所述目标对象对应的发送任务为所述目标任务。
在一种可能的实现方式中,所述第一确定模块,用于获取所述至少一个发送任务对应的接收对象的标识;获取至少一个目标对象的标识;将所述至少一个发送任务对应的接收对象的标识与所述至少一个目标对象对应的标识进行匹配,得到匹配结果;基于所述匹配结果,确定所述至少一个发送任务对应的接收对象中包括的目标对象。
在一种可能的实现方式中,所述第二确定模块,还用于确定所述目标对象所服务的目标应用程序所需的数据的第一数据类型;识别所述至少一个报文中的各个报文包含的数据所属的第二数据类型;响应于任一报文包含的数据所属的第二数据类型与所述第一数据类型匹配,确定所述任一报文包含的数据为所述目标对象所服务的目标应用程序所需的数据。
还提供了一种数据发送装置,所述装置包括:
接收模块,用于基于接收对象接收包含数据的报文;
解析模块,用于响应于所述数据为所述接收对象所服务的目标应用程序所需的数据,解析所述报文,得到所述数据;
生成模块,用于生成将所述数据发往所述目标应用程序的发送任务;
添加模块,用于将所述发送任务加入与所述目标应用程序对应的线程;
矫正模块,用于对所述线程执行所述发送任务的时间进行正态分布动态矫正;
发送模块,用于基于执行了正态分布动态矫正后的所述线程执行所述发送任务,以使所述数据发往所述目标应用程序。
在一种可能的实现方式中,所述数据为惯导数据,所述矫正模块,用于对所述线程执行所述发送任务的时间进行正态分布动态延迟,所述发送任务的内容为将所述惯导数据发往需要所述惯导数据的应用程序。
在一种可能的实现方式中,所述矫正模块,用于对所述线程执行所述发送任务的时间延迟第一时长,所述第一时长由第一参考时长与调用时长的差值确定,所述第一参考时长由需要所述惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,所述调用时长为所述线程将上一帧惯导数据发送到需要惯导数据的目标应用程序所用的时长。
在一种可能的实现方式中,所述矫正模块,还用于响应于对所述线程执行所述发送任务的时间延迟所述第一时长后,所述线程中没有需要执行的发送任务,重新对所述线程执行发送任务的时间延迟所述第一时长,以使在重新延迟期间加入所述线程的发送任务在重新延迟后被执行。
在一种可能的实现方式中,所述矫正模块,还用于响应于第一时间与第二时间的间隔小于第二参考时长,对所述线程执行所述发送任务的时间延迟第二时长,所述第二参考时长由需要所述惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,所述第二时长由所述第二参考时长与所述间隔的差值确定,所述第一时间为所述线程执行所述发送任务的时间延迟所述第一时长后对应的时间,所述第二时间为所述线程将上一帧惯导数据发往需要惯导数据的目标应用程序的时间。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以使所述计算机设备实现上述任一所述的报文分发方法或者数据发送方法。
另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以使计算机实现上述任一所述的报文分发方法或者数据发送方法。
另一方面,还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序或计算机指令,所述计算机程序或所述计算机指令由处理器加载并执行,以使计算机实现上述任一所述的报文分发方法或者数据发送方法。
本申请实施例提供的技术方案至少带来如下有益效果:
本申请实施例提供的技术方案,通过从至少一个发送任务中选出目标任务,并将目标任务加入对应的线程池执行可以使目标任务不需要在任务队列中进行排队处理,避免了因任务队列已满导致的目标任务无法入队被执行的问题,进而使得目标任务对应的接收对象不会丢失报文。
此外,当基于接收对象接收到的报文是接收对象所服务的目标应用程序所需的报文时,解析该报文得到报文包含的数据,将数据发往对应的目标应用程序前对发送该数据的时间进行正态分布动态矫正,以使目标应用程序接收到的数据的时间间隔更加稳定。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种报文分发方法的流程图;
图3是本申请实施例提供的一种数据发送方法的流程图;
图4是本申请实施例提供的一种对线程执行发送任务的时间进行正态分布动态延迟的流程图;
图5是本申请实施例提供的一种报文分发装置示意图;
图6是本申请实施例提供的一种数据发送装置示意图;
图7是本申请实施例提供的一种服务器的结构示意图;
图8是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
需要说明的是,本申请的说明书和权利要求书中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
请参考图1,其示出了本申请实施例提供的方法实施环境的示意图。该实施环境可以包括:终端11和服务器12。
其中,终端11可以从服务器12中获取到用于生成报文的数据,终端11可以基于获取到的用于生成报文的数据生成报文。终端11中可以创建线程池,该线程池中包括的线程可以执行发送报文的发送任务,终端11中能够安装应用程序,服务器12可以为终端11提供相应的安装包。
可选地,终端11可以是任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如PC(PersonalComputer,个人计算机)、手机、智能手机、PDA(Personal Digital Assistant,个人数字助手)、可穿戴设备、PPC(Pocket PC,掌上电脑)、平板电脑、智能车机等。服务器12可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。终端11与服务器12通过有线或无线网络建立通信连接。
本领域技术人员应能理解上述终端11和服务器12仅为举例,其他现有的或今后可能出现的终端或服务器如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
基于上述图1所示的实施环境,本申请实施例提供一种报文分发方法,以该方法应用于终端11为例。如图2所示,本申请实施例提供的方法可以包括如下步骤201至步骤204。
在步骤201中,获取待分发的至少一个报文。
在示例性实施例中,终端获取到用于生成报文的数据后,根据该数据生成对应的报文。例如,用于生成报文的数据为惯导数据,对应的生成的报文为包含惯导数据的Nmea(National Marine Electronics Association,国际海洋电子协会)报文。本申请实施例不对生成报文的方式进行限定,示例性地,获取待分发的至少一个报文,包括:获取用于生成待分发的报文对应的数据;基于该数据与除了该数据外生成报文所需要的信息组合生成待分发的报文。
其中,生成报文所需要的信息可以根据报文结构来确定,而报文结构可以基于数据分发场景确定,有发送需求的报文均可作为本申请实施例中的待分发的报文。此外,本申请实施例也不对待分发的报文数量进行限定,该待分发的报文可以是同一个应用程序需要接收的报文,也可以是不同应用程序需要接收的报文。
在步骤202中,生成待分发的报文对应的至少一个发送任务。
一个待分发的报文对应的接收对象可以是多个,也可以是一个。可选地,一个接收对象为一个应用程序。因而,在生成该报文对应的至少一个发送任务之前,需要确定该报文对应的接收对象,之后终端生成将该报文发往每一个接收对象的发送任务,得到至少一个发送任务。示例性地,每一个发送任务均包含该报文以及一个接收对象的信息。需要说明的是,接收对象是终端中存在的应用程序。
在步骤203中,响应于至少一个发送任务中包含目标任务,将目标任务加入针对于目标任务建立的线程池,将非目标任务加入对应的任务队列。
其中,目标任务为至少一个发送任务中需要保证被执行的发送任务,非目标任务为至少一个发送任务中除了目标任务外的发送任务。
在相关技术中,发送任务被送入用于执行发送任务的线程所对应的任务队列中排队等待,当轮到该发送任务时,基于该线程执行该发送任务,使得该发送任务对应的报文发往该发送任务对应的接收对象。但当发送任务较多时,存在任务队列已满的情况,此时,再生成的发送任务因任务队列已满而无法入队,无法入队的发送任务会丢失,进而导致丢失的发送任务所对应的接收对象无法接收到该丢失的发送任务所对应的报文。
在本申请的示例性实施例中,为使至少一个发送任务中需要保证被执行的发送任务可以被执行,以使对应的接收对象不丢失报文,则需要在至少一个发送任务中确定出目标任务,再将目标任务加入针对于目标任务创建的线程池中,由线程池中的线程来执行该目标任务。目标任务为需要保证被执行的发送任务,由于目标任务由对应的线程池中的线程来执行,因而目标任务无需在任务队列排队等待被执行,所以目标任务可以避免因任务队列已满而造成的丢失问题。
因而,响应于至少一个发送任务中包含目标任务,将目标任务加入针对于目标任务建立的线程池之前,需要从至少一个发送任务中确定出目标任务。
例如,当需要保证接收对象A和接收对象B不丢失报文时,可以设定与接收对象A和接收对象B对应的发送任务为目标任务。
在一些实施例中,响应于至少一个发送任务中包含目标任务,将目标任务加入针对于目标任务建立的线程池之前,还包括:确定至少一个发送任务对应的接收对象中包括的目标对象,目标对象为需要保证接收到报文的对象;基于目标对象,从至少一个发送任务中确定出目标任务。其中,目标对象可以预先设定。此种方式,可以使得目标对象避免因为发送任务队列已满而造成的丢失报文的问题。
在示例性实施例中,确定至少一个发送任务对应的接收对象中包括的目标对象之前,需要预先标定出各个目标对象。之后,确定至少一个发送任务对应的接收对象中包括的目标对象,包括:获取至少一个发送任务对应的接收对象的标识;获取至少一个目标对象的标识;将至少一个发送任务对应的接收对象的标识与至少一个目标对象对应的标识进行匹配,得到匹配结果;基于匹配结果,确定至少一个发送任务对应的接收对象中包括的目标对象。
其中,匹配结果包括至少一个发送任务对应的各个接收对象的标识是否属于目标对象的标识。若一个发送任务对应的接收对象的标识属于目标对象的标识,则该发送任务对应的接收对象为目标对象,反之,若该发送任务对应的接收对象的标识不属于目标对象的标识,则该发送任务对应的接收对象不属于目标对象。
在另一个示例性实施例中,接收对象用于为目标应用程序服务,保证目标对象不丢失报文的目的是为了保证目标对象不丢失报文包含的数据。发往目标对象的报文所包含的数据包括目标对象所服务的目标应用程序需要的数据,还包括目标对象所服务的目标应用程序不需要的数据。例如,当目标接收对象为惯导服务端时,惯导数据是该惯导服务端对应的应用程序需要的数据,而非惯导数据则不是惯导服务端对应的应用程序需要的数据,惯导服务端会接收到包含惯导数据的Nmea报文,也会接收到包括非惯导数据的Nmea报文。
为使目标对象在不丢失数据的前提下,更好地接收到所服务的目标应用程序所需要的数据,则需要对报文包含的数据进行识别,确定报文包含的数据是否为目标对象所服务的目标应用程序所需要的数据。若报文包含的数据为目标对象所服务的目标应用程序所需的数据,则将该报文对应的发往目标对象的发送任务确定为目标任务。所以,在示例性实施例中,基于目标对象,从至少一个发送任务中确定出目标任务,包括:响应于任一报文包含的数据为目标对象所服务的目标应用程序所需的数据,确定目标对象对应的发送任务为目标任务。
在示例性实施例中,响应于任一报文包含的数据为目标对象所服务的目标应用程序所需的数据,确定目标对象对应的发送任务为目标任务之前,还需要确定报文包含的数据是否为目标对象所服务的目标应用程序所需的数据。确定报文包含的数据是否为目标对象所服务的目标应用程序所需的数据的方式,包括但不限于:确定目标对象所服务的目标应用程序所需的数据的第一数据类型;识别各个报文包含的数据所属的第二数据类型;响应于任一报文包含的数据所属的第二数据类型与第一数据类型匹配,确定该任一报文包含的数据为目标对象所服务的目标应用程序所需的数据。
示例性地,任一报文包含的数据所属的第二数据类型与第一数据类型匹配,包括但不限于任一报文包含的数据所属的第二数据类型与第一数据类型相同,或者第二数据类型包括在第一数据类型内。例如,目标对象所服务的目标应用程序所需的数据的第一数据类型包括惯导数据,若报文包含的数据所属的第二数据类型为惯导数据时,第二数据类型与第一数据类型匹配,则报文包含的数据为目标对象所服务的目标应用程序所需的数据。
从至少一个发送任务中确定出目标任务后,将目标任务加入针对于目标任务创建的线程池中,基于线程池来执行目标任务。因此,响应于至少一个发送任务中包含目标任务,将目标任务加入针对于目标任务建立的线程池之前,还包括:创建用于执行目标任务的线程池。
在示例性实施例中,至少一个发送任务中除了目标任务,针对非目标任务按照相关技术中的报文分发方式进行分发。即将至少一个发送任务中除了目标任务外的非目标任务加入对应的任务队列。
在步骤204中,基于线程池包含的线程执行目标任务,以使目标任务对应的报文发往目标任务对应的接收对象,基于任务队列对应的线程执行非目标任务,以使非目标任务对应的报文发往非目标任务对应的接收对象。
在示例性实施例中,从至少一个发送任务中确定出目标任务后,将目标任务加入对应的线程池,之后,基于线程池包含的线程执行目标任务,目标任务执行的结果是与目标任务对应的报文发往目标任务对应的接收对象。示例性地,目标任务为将包含惯导数据的报文发往惯导服务端。
在示例性实施例中,至少一个发送任务中除了目标任务外的非目标任务按照任务队列的报文分发方式进行分发,非目标任务在对应的任务队列中排队等待处理,当在任务队列中轮到非目标任务被执行时,基于任务队列对应的线程执行非目标任务,以使非目标任务对应的报文发往非目标任务对应的接收对象。
在本申请实施例中,通过从至少一个发送任务中选出目标任务,并将目标任务加入对应的线程池执行,可以使目标任务不需要在任务队列中进行排队处理,避免了因任务队列已满导致的目标任务无法入队被执行的问题,进而使得目标任务对应的接收对象不会丢失报文,提高了报文分发效率和接收报文的可靠性。
基于上述图1所示的实施环境,本申请实施例提供一种数据发送方法,该方法由终端11执行,如图3所示,本申请实施例提供的数据发送方法包括如下步骤301至步骤304。
在步骤301中,基于接收对象接收包含数据的报文,响应于该数据为接收对象所服务的目标应用程序所需的数据,解析该报文,得到该数据。
在示例性实施例中,接收对象具有接收报文的接口,可以实现对报文的接收,且接收对象具有解析报文的程序,基于该程序可以使得接收对象能够对部分类型报文进行解析。例如,一个接收对象可以解析的报文包括包含A数据的报文和包含B数据的报文,另一个接收对象可以解析的报文包括包含C数据的报文和包含D数据的报文。
在一些实施例中,可基于接收对象接收报文,会接收到包含接收对象所服务的目标应用程序所需的数据的报文(以下简称目标报文),也会接收到包含接收对象所服务的目标应用程序不需要的数据的报文(以下简称为非目标报文)。通常,非目标报文无法被接收对象解析,即基于接收对象接收到非目标报文后,尝试对非目标报文进行解析,得到无法解析的结果,或者解析得到的数据不是接收对象所服务的目标应用程序所需的数据后,才能确定接收到的报文是非目标报文,之后会将非目标报文从接收对象中去除。当基于接收对象接收到的报文为目标报文时,即报文包含的数据为接收对象所服务的目标应用程序所需的数据时,基于接收对象直接解析该报文,得到该数据。示例性地,目标报文为包含惯导数据的Nmea报文,接收对象为惯导服务端,基于惯导服务端解析该Nmea报文,得到该Nmea报文包含的惯导数据。
在步骤302中,生成将数据发往目标应用程序的发送任务,将该发送任务加入与该目标应用程序对应的线程。
基于接收对象解析报文得到报文包含的数据后,需要将该数据发往接收对象所服务的目标应用程序。因而,在基于接收对象解析报文得到报文包含的数据后,需要生成将数据发往接收对象所服务的目标应用程序的发送任务,该发送任务可基于接收对象生成。之后,将该发送任务加入与该目标应用程序对应的线程。例如,报文包含的数据为惯导数据,基于接收对象生成的发送任务为将惯导数据发往惯导服务端对应的目标应用程序,示例性地,惯导服务端对应的目标应用程序包括导航应用程序。需要说明的是,发送任务包括了需要发送的数据,例如,发送任务的内容为将A数据发往B应用程序,其中A数据即为需要发送的数据。
在步骤303中,对线程执行发送任务的时间进行正态分布动态矫正。
在一些实施例中,接收对象所服务的目标应用程序在接收数据时,对前后两帧数据的间隔存在一定的要求。例如,接收对象为惯导服务端,目标应用程序为导航应用程序,对于导航应用程序来说,通常接收到前后两帧惯导数据的间隔在50-150ms(毫秒)时具有更好的导航效果。因此,在基于线程执行发送任务,以使数据发往接收对象所服务的目标应用程序前,需要根据目标应用程序对应的时间间隔对线程执行发送任务的时间进行正态分布动态矫正,以使目标应用程序接收到时间间隔更加稳定的数据。
在示例性实施例中,当发送任务对应的数据为惯导数据时,对线程执行发送任务的时间进行正态分布动态矫正,包括:对线程执行发送任务的时间进行正态分布动态延迟,发送任务的内容为将惯导数据发往需要惯导数据的应用程序。
在示例性实施例中,当发送任务的内容为将惯导数据发往需要惯导数据的应用程序时,对线程执行发送任务的时间进行正态分布动态延迟,包括:对线程执行发送任务的时间延迟第一时长,第一时长由第一参考时长与调用时长的差值确定,第一参考时长由需要惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,调用时长为线程将上一帧惯导数据发送到需要惯导数据的目标应用程序所用的时长。其中,第一参考时长为设定值,本申请实施例对此不做限制,可根据需要惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,示例性地,第一参考时长为100ms。调用时长指的是调用正态分布动态延迟程序所需的时长,也即基于线程将上一帧惯导数据发送到需要惯导数据的目标应用程序所用的时长。当发送任务的内容为将惯导数据发往需要惯导数据的目标应用程序时,对线程执行发送任务的时间延迟第一时长后,可以使得接收惯导数据的目标应用程序接收到时间间隔更加稳定的惯导数据。
在一些实施例中,当发送任务的内容为将惯导数据发往需要惯导数据的目标应用程序时,存在对线程执行发送任务的时间延迟第一时长后,线程中没有需要执行的发送任务的情况。此时,为了保证需要惯导数据的目标应用程序接收到前后两帧惯导数据时间间隔的稳定,需要重新延迟第一时长后再基于线程执行发送任务,以使在重新延迟期间加入线程的发送任务在重新延迟后被执行,进而使该目标应用程序接收到的前后两帧惯导数据之间有一个稳定时间间隔。因而,在示例性实施例中,当发送任务的内容为将惯导数据发往需要惯导数据的目标应用程序时,对线程执行发送任务的时间延迟第一时长之后,还包括:响应于对线程执行发送任务的时间延迟第一时长后,线程中没有需要执行的发送任务,重新对线程执行发送任务的时间延迟第一时长,以使在重新延迟期间加入线程的发送任务在重新延迟后被执行。
为使得需要惯导数据的目标应用程序接收到惯导数据后可以及时处理惯导数据,需要保证该目标应用程序接收到惯导数据的时间间隔不能小于一定值,以便该目标应用程序在下一帧惯导数据到来之前有时间处理上一帧惯导数据。因而,在示例性实施例中,当发送任务的内容为将惯导数据发往需要惯导数据的目标应用程序时,对线程执行发送任务的时间延迟第一时长之后,还包括:响应于第一时间与第二时间的间隔小于第二参考时长,对线程执行发送任务的时间延迟第二时长,第二参考时长由需要惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,第二时长由第二参考时长与间隔的差值确定,第一时间为线程执行发送任务的时间延迟第一时长后对应的时间,第二时间为线程将上一帧惯导数据发往需要惯导数据的目标应用程序的时间。其中,第二参考时长是设定值,本申请实施例对此不做限制,可根据需要惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定。示例性地,第二参考时长为50ms。
在步骤304中,基于执行了正态分布动态矫正后的线程执行发送任务,以使数据发往目标应用程序。
在示例性实施例中,对线程执行发送任务的时间进行了正态分布动态矫正后,直接基于执行了正态分布动态矫正后的线程执行该发送任务,以使数据发往对应的目标应用程序。
在另一个示例性实施例中,当发送任务的内容为将惯导数据发往需要惯导数据的目标应用程序时,对线程执行发送任务的时间进行正态分布动态延迟的过程如图4所示。
401:对线程执行发送任务的时间延迟第一时长T1,之后执行402,第一时长由第一参考时长TC1与调用时长TD的差值确定,即T1=TC1-TD。
402:判断延迟T1后线程中是否存在发送任务,若不存在发送任务,则执行401,若存在发送任务,则执行403。
403:判断延时T1后的时间与基于线程将上一帧惯导数据发往应用程序的时间的差值Tc是否小于第二参考时长TC2,若Tc小于TC2则执行404,若Tc不小于TC2则执行405。
404:对线程执行发送任务的时间延迟第二时长T2,之后执行405,T2由TC2与Tc的差值决定,即T2=TC2-Tc。
405:基于线程执行发送任务。
在本申请实施例中,解析报文得到报文包含的数据,基于接收对象将数据发往对应的目标应用程序前对发送该数据的时间进行正态分布动态矫正,使得目标应用程序接收到的数据的时间间隔更加稳定。
参见图5,本申请实施例提供了一种报文分发装置,该装置包括:
获取模块501,用于获取待分发的至少一个报文;
生成模块502,用于生成报文对应的至少一个发送任务;
添加模块503,用于响应于至少一个发送任务中包含目标任务,将目标任务加入针对于目标任务建立的线程池,将非目标任务加入对应的任务队列,目标任务为至少一个发送任务中需要保证被执行的发送任务,非目标任务为至少一个发送任务中除了目标任务外的发送任务;
发送模块504,用于基于线程池包含的线程执行目标任务,以使目标任务对应的报文发往目标任务对应的接收对象,基于任务队列对应的线程执行非目标任务,以使非目标任务对应的报文发往非目标任务对应的接收对象。
在一种可能的实现方式中,装置还包括:
第一确定模块,用于确定至少一个发送任务对应的接收对象中包括的目标对象,目标对象为需要保证接收到报文的对象;
第二确定模块,用于基于目标对象,从至少一个发送任务中确定出目标任务。
在一种可能的实现方式中,接收对象用于为目标应用程序服务,第二确定模块506,用于响应于任一报文包含的数据为目标对象所服务的目标应用程序所需的数据,确定目标对象对应的发送任务为目标任务。
在一种可能的实现方式中,第一确定模块,用于获取至少一个发送任务对应的接收对象的标识;获取至少一个目标对象的标识;将至少一个发送任务对应的接收对象的标识与至少一个目标对象对应的标识进行匹配,得到匹配结果;基于匹配结果,确定至少一个发送任务对应的接收对象中包括的目标对象。
在一种可能的实现方式中,第二确定模块,还用于确定目标对象所服务的目标应用程序所需的数据的第一数据类型;识别至少一个报文中的各个报文包含的数据所属的第二数据类型;响应于任一报文包含的数据所属的第二数据类型与第一数据类型匹配,确定任一报文包含的数据为目标对象所服务的目标应用程序所需的数据。
在本申请实施例中,通过从至少一个发送任务中选出目标任务,并将目标任务加入对应的线程池执行可以使目标任务不需要在任务队列中进行排队处理,避免了因任务队列已满导致的目标任务无法入队被执行的问题,进而使得目标任务对应的接收对象不会丢失报文。
参见图6,本申请实施例提供了一种数据发送装置,该装置包括:
接收模块601,用于基于接收对象接收包含数据的报文;
解析模块602,用于响应于数据为接收对象所服务的目标应用程序所需的数据,解析报文,得到数据;
生成模块603,用于生成将数据发往目标应用程序的发送任务;
添加模块604,用于将发送任务加入与目标应用程序对应的线程;
矫正模块605,用于对线程执行发送任务的时间进行正态分布动态矫正;
发送模块606,用于基于执行了正态分布动态矫正后的所述线程执行所述发送任务,以使所述数据发往所述目标应用程序。
在一种可能的实现方式中,数据为惯导数据,矫正模块605,用于对线程执行发送任务的时间进行正态分布动态延迟,发送任务的内容为将惯导数据发往需要惯导数据的应用程序。
在一种可能的实现方式中,矫正模块605,用于对线程执行发送任务的时间延迟第一时长,第一时长由第一参考时长与调用时长的差值确定,第一参考时长由需要惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,调用时长为线程将上一帧惯导数据发送到需要惯导数据的目标应用程序所用的时长。
在一种可能的实现方式中,矫正模块605,还用于响应于对线程执行发送任务的时间延迟第一时长后,线程中没有需要执行的发送任务,重新对线程执行发送任务的时间延迟第一时长,以使在重新延迟期间加入线程的发送任务在重新延迟后被执行。
在一种可能的实现方式中,矫正模块605,还用于响应于第一时间与第二时间的间隔小于第二参考时长,对线程执行发送任务的时间延迟第二时长,第二参考时长由需要惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,第二时长由第二参考时长与间隔的差值确定,第一时间为线程执行发送任务的时间延迟第一时长后对应的时间,第二时间为线程将上一帧惯导数据发往需要惯导数据的目标应用程序的时间。
在本申请实施例中,解析报文得到报文包含的数据,将数据发往对应的目标应用程序前对发送该数据的时间进行正态分布动态矫正,使得目标应用程序接收到的数据的时间间隔更加稳定。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图7是本申请实施例提供的一种服务器的结构示意图,该服务器可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)701和一个或多个存储器702,其中,该一个或多个存储器702中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器701加载并执行,以使该服务器实现上述各个方法实施例提供的报文分发方法或者数据发送方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
图8是本申请实施例提供的一种终端的结构示意图。该终端可以是:智能手机、平板电脑、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行,以使该终端实现本申请中方法实施例提供的报文分发方法或者数据发送方法。
在一些实施例中,终端还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:射频电路804、显示屏805、摄像头组件806、音频电路807、定位组件808和电源809中的至少一种。
外围设备接口803可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路804用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏805用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置在终端的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在终端的不同表面或呈折叠设计;在另一些实施例中,显示屏805可以是柔性显示屏,设置在终端的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。
定位组件808用于定位终端的当前地理位置,以实现导航或LBS(Location BasedService,基于位置的服务)。定位组件808可以是基于美国的GPS(Global PositioningSystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源809用于为终端中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。
加速度传感器811可以检测以终端建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器812可以检测终端的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对终端的3D动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器813可以设置在终端的侧边框和/或显示屏805的下层。当压力传感器813设置在终端的侧边框时,可以检测用户对终端的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在显示屏805的下层时,由处理器801根据用户对显示屏805的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置在终端的正面、背面或侧面。当终端上设置有物理按键或厂商Logo(商标)时,指纹传感器814可以与物理按键或厂商Logo集成在一起。
光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制显示屏805的显示亮度。具体地,当环境光强度较高时,调高显示屏805的显示亮度;当环境光强度较低时,调低显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。
接近传感器816,也称距离传感器,通常设置在终端的前面板。接近传感器816用于采集用户与终端的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与终端的正面之间的距离逐渐变小时,由处理器801控制显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与终端的正面之间的距离逐渐变大时,由处理器801控制显示屏805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图8中示出的结构并不构成对终端的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条计算机程序。该至少一条计算机程序由一个或者一个以上处理器加载并执行,以使该计算机设备实现上述任一种报文分发方法或者数据发送方法。
在示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由计算机设备的处理器加载并执行,以使计算机实现上述任一种报文分发方法或者数据发送方法。
在一种可能实现方式中,上述计算机可读存储介质可以是只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact DiscRead-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,该计算机程序或计算机指令由处理器加载并执行,以使计算机实现上述任一种报文分发方法或者数据发送方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (8)

1.一种报文分发方法,其特征在于,所述方法包括:
获取待分发的至少一个报文;
生成所述报文对应的至少一个发送任务,所述发送任务的内容为将惯导数据发往需要惯导数据的应用程序;
响应于所述至少一个发送任务中包含目标任务,将所述目标任务加入针对于所述目标任务建立的线程池,将非目标任务加入对应的任务队列,所述目标任务为所述至少一个发送任务中需要保证被执行的发送任务,所述非目标任务为所述至少一个发送任务中除了所述目标任务外的发送任务;
对所述线程池包含的线程执行所述目标任务的时间延迟第一时长,所述第一时长由第一参考时长与调用时长的差值确定,所述第一参考时长由需要所述惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,所述调用时长为所述线程将上一帧惯导数据发送到需要所述惯导数据的目标应用程序所用的时长;
基于所述线程池包含的执行了时间延迟的线程执行所述目标任务,以使所述目标任务对应的报文发往所述目标任务对应的接收对象,基于所述任务队列对应的线程执行所述非目标任务,以使所述非目标任务对应的报文发往所述非目标任务对应的接收对象。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述至少一个发送任务中包含目标任务,将所述目标任务加入针对于所述目标任务建立的线程池之前,还包括:
确定所述至少一个发送任务对应的接收对象中包括的目标对象,所述目标对象为需要保证接收到报文的对象;
基于所述目标对象,从所述至少一个发送任务中确定出所述目标任务。
3.根据权利要求2所述的方法,其特征在于,所述接收对象用于为目标应用程序服务,所述基于所述目标对象,从所述至少一个发送任务中确定出所述目标任务,包括:
响应于任一报文包含的数据为所述目标对象所服务的目标应用程序所需的数据,确定所述目标对象对应的发送任务为所述目标任务。
4.根据权利要求2所述的方法,其特征在于,所述确定所述至少一个发送任务对应的接收对象中包括的目标对象,包括:
获取所述至少一个发送任务对应的接收对象的标识;获取至少一个目标对象的标识;
将所述至少一个发送任务对应的接收对象的标识与所述至少一个目标对象对应的标识进行匹配,得到匹配结果;
基于所述匹配结果,确定所述至少一个发送任务对应的接收对象中包括的目标对象。
5.根据权利要求3所述的方法,其特征在于,所述响应于任一报文包含的数据为所述目标对象所服务的目标应用程序所需的数据,确定所述目标对象对应的发送任务为所述目标任务之前,还包括:
确定所述目标对象所服务的目标应用程序所需的数据的第一数据类型;
识别所述至少一个报文中的各个报文包含的数据所属的第二数据类型;
响应于任一报文包含的数据所属的第二数据类型与所述第一数据类型匹配,确定所述任一报文包含的数据为所述目标对象所服务的目标应用程序所需的数据。
6.根据权利要求1所述的方法,其特征在于,所述对所述线程池包含的线程执行所述目标任务的时间延迟第一时长之后,还包括:
响应于对所述线程执行所述发送任务的时间延迟所述第一时长后,所述线程中没有需要执行的发送任务,重新对所述线程执行发送任务的时间延迟所述第一时长,以使在重新延迟期间加入所述线程的发送任务在重新延迟后被执行。
7.根据权利要求1所述的方法,其特征在于,所述对所述线程池包含的线程执行所述目标任务的时间延迟第一时长之后,还包括:
响应于第一时间与第二时间的间隔小于第二参考时长,对所述线程执行所述发送任务的时间延迟第二时长,所述第二参考时长由需要所述惯导数据的目标应用程序对前后两帧惯导数据的时间间隔的需求确定,所述第二时长由所述第二参考时长与所述间隔的差值确定,所述第一时间为所述线程执行所述发送任务的时间延迟所述第一时长后对应的时间,所述第二时间为所述线程将上一帧惯导数据发往需要惯导数据的目标应用程序的时间。
8.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以使所述计算机设备实现如权利要求1至7任一所述的报文分发方法。
CN202210562620.9A 2022-05-23 2022-05-23 报文分发、数据发送方法及设备 Active CN115037702B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210562620.9A CN115037702B (zh) 2022-05-23 2022-05-23 报文分发、数据发送方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210562620.9A CN115037702B (zh) 2022-05-23 2022-05-23 报文分发、数据发送方法及设备

Publications (2)

Publication Number Publication Date
CN115037702A CN115037702A (zh) 2022-09-09
CN115037702B true CN115037702B (zh) 2024-04-12

Family

ID=83120158

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210562620.9A Active CN115037702B (zh) 2022-05-23 2022-05-23 报文分发、数据发送方法及设备

Country Status (1)

Country Link
CN (1) CN115037702B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101547259A (zh) * 2009-04-30 2009-09-30 华东师范大学 基于模拟数据流的VoIP测试方法
CN102043675A (zh) * 2010-12-06 2011-05-04 北京华证普惠信息股份有限公司 一种基于任务处理请求任务量大小的线程池管理方法
CN103209438A (zh) * 2013-04-24 2013-07-17 大唐移动通信设备有限公司 一种控制rnc负荷的方法及装置
CN103455377A (zh) * 2013-08-06 2013-12-18 北京京东尚科信息技术有限公司 用于管理业务线程池的系统和方法
CN106020954A (zh) * 2016-05-13 2016-10-12 深圳市永兴元科技有限公司 线程管理方法及装置
CN106802826A (zh) * 2016-12-23 2017-06-06 中国银联股份有限公司 一种基于线程池的业务处理方法及装置
CN110096340A (zh) * 2018-01-29 2019-08-06 北京世纪好未来教育科技有限公司 定时任务处理方法及装置
CN110515715A (zh) * 2019-08-22 2019-11-29 北京宝兰德软件股份有限公司 基于线程池的任务处理方法及装置
CN110673927A (zh) * 2019-09-27 2020-01-10 北京浪潮数据技术有限公司 一种虚拟机的调度方法和装置
CN111190751A (zh) * 2019-12-30 2020-05-22 广州酷狗计算机科技有限公司 基于歌单的任务处理方法、装置、计算机设备及存储介质
CN111831410A (zh) * 2020-07-01 2020-10-27 Oppo广东移动通信有限公司 任务处理方法、装置、存储介质及电子设备
CN113472690A (zh) * 2021-06-29 2021-10-01 中国农业银行股份有限公司 一种业务报文处理方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248283A1 (en) * 2005-04-29 2006-11-02 Galin Galchev System and method for monitoring threads in a clustered server architecture
US8776077B2 (en) * 2008-04-02 2014-07-08 Oracle America, Inc. Method for multithreading an application using partitioning to allocate work to threads
CN105162878B (zh) * 2015-09-24 2018-08-31 网宿科技股份有限公司 基于分布式存储的文件分发系统及方法
US11132218B2 (en) * 2018-12-28 2021-09-28 Paypal, Inc. Task execution with non-blocking calls
CN110209488B (zh) * 2019-06-10 2021-12-07 北京达佳互联信息技术有限公司 任务执行方法、装置、设备、系统及存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101547259A (zh) * 2009-04-30 2009-09-30 华东师范大学 基于模拟数据流的VoIP测试方法
CN102043675A (zh) * 2010-12-06 2011-05-04 北京华证普惠信息股份有限公司 一种基于任务处理请求任务量大小的线程池管理方法
CN103209438A (zh) * 2013-04-24 2013-07-17 大唐移动通信设备有限公司 一种控制rnc负荷的方法及装置
CN103455377A (zh) * 2013-08-06 2013-12-18 北京京东尚科信息技术有限公司 用于管理业务线程池的系统和方法
CN106020954A (zh) * 2016-05-13 2016-10-12 深圳市永兴元科技有限公司 线程管理方法及装置
CN106802826A (zh) * 2016-12-23 2017-06-06 中国银联股份有限公司 一种基于线程池的业务处理方法及装置
CN110096340A (zh) * 2018-01-29 2019-08-06 北京世纪好未来教育科技有限公司 定时任务处理方法及装置
CN110515715A (zh) * 2019-08-22 2019-11-29 北京宝兰德软件股份有限公司 基于线程池的任务处理方法及装置
CN110673927A (zh) * 2019-09-27 2020-01-10 北京浪潮数据技术有限公司 一种虚拟机的调度方法和装置
CN111190751A (zh) * 2019-12-30 2020-05-22 广州酷狗计算机科技有限公司 基于歌单的任务处理方法、装置、计算机设备及存储介质
CN111831410A (zh) * 2020-07-01 2020-10-27 Oppo广东移动通信有限公司 任务处理方法、装置、存储介质及电子设备
CN113472690A (zh) * 2021-06-29 2021-10-01 中国农业银行股份有限公司 一种业务报文处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于UNIX C语言的一种线程池实现;翁小东;;电脑知识与技术(第16期);全文 *

Also Published As

Publication number Publication date
CN115037702A (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
CN110278464B (zh) 显示榜单的方法和装置
CN111614549B (zh) 交互处理方法、装置、计算机设备及存储介质
CN110944374B (zh) 通信模式的选择方法、装置、电子设备及介质
CN111510482B (zh) 失败网络请求的确定方法、装置及计算机存储介质
CN111045945B (zh) 模拟直播的方法、装置、终端、存储介质及程序产品
CN110740340A (zh) 视频直播方法及装置、存储介质
CN110912830B (zh) 传输数据的方法和装置
CN110673944A (zh) 执行任务的方法和装置
CN108401194B (zh) 时间戳确定方法、装置和计算机可读存储介质
CN111862972B (zh) 语音交互服务方法、装置、设备及存储介质
CN112612539B (zh) 数据模型卸载方法、装置、电子设备及存储介质
CN111914985B (zh) 深度学习网络模型的配置方法、装置及存储介质
CN115037702B (zh) 报文分发、数据发送方法及设备
CN112597417B (zh) 页面更新方法、装置、电子设备及存储介质
CN111708581B (zh) 应用启动方法、装置、设备及计算机存储介质
CN111708669B (zh) 系统运行的分析方法、装置、设备及存储介质
CN113448692B (zh) 分布式图计算的方法、装置、设备及存储介质
CN111464829B (zh) 切换媒体数据的方法、装置、设备及存储介质
CN111245629B (zh) 会议控制方法、装置、设备及存储介质
CN114550717A (zh) 语音音区切换方法、装置、设备及存储介质
CN108310767B (zh) 信息展示方法、装置、设备及计算机可读存储介质
CN112260845A (zh) 进行数据传输加速的方法和装置
CN112035823B (zh) 数据获取方法、装置、终端及存储介质
CN114816187B (zh) 控件显示方法、装置、计算机设备及介质
CN115348262B (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