CN110287023B - 消息处理方法、装置、计算机设备和可读存储介质 - Google Patents
消息处理方法、装置、计算机设备和可读存储介质 Download PDFInfo
- Publication number
- CN110287023B CN110287023B CN201910500654.3A CN201910500654A CN110287023B CN 110287023 B CN110287023 B CN 110287023B CN 201910500654 A CN201910500654 A CN 201910500654A CN 110287023 B CN110287023 B CN 110287023B
- Authority
- CN
- China
- Prior art keywords
- message processing
- thread
- ring buffer
- message
- 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
Links
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种消息处理方法、装置、计算机设备和可读存储介质,该方法包括:调用主线程创建多级环形缓冲区;调用主线程唤醒多个消息处理线程;多个消息处理线程间存在级联关系;调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理;各消息处理线程的输出数据存储于各消息处理线程对应的环形缓冲区中;各消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。在该方法中,计算机设备能够调用主线程唤醒多个消息处理线程,多个消息处理线程间存在级联关系能够分别对多级环形缓冲区中的待处理消息进行单一逻辑处理,能够实现对待处理数据的层层处理,实现对待处理数据的快速转移,提高对待处理消息的处理效率。
Description
技术领域
本发明涉及通信领域,特别是涉及一种消息处理方法、装置、计算机设备和可读存储介质。
背景技术
短波电台内部的通信控制软件一般对外采用网口、串口或者其他专用接口的方式,对外进行控制数据和业务数据的双向交互,控制短波电台之间通过单工、半双工、全双工等通信方式实现数据通信。作为短波电台内部的重要嵌入式软件之一,通信控制软件起到了接口实现、协议适配、运行控制、参数维护和数据封装等功能。
传统的短波电台通信控制软件一般采用异步串行设计方案,通过共享存储模块存储接收的消息,在处理消息的过程中,采用两条线程将消息的读写分离,实现异步的消息处理。
但是,传统的短波电台通信控制软件存在消息处理效率低下的问题。
发明内容
基于此,有必要针对传统的短波电台通信控制软件存在消息处理效率低下的问题,提供一种消息处理方法、装置、计算机设备和可读存储介质。
第一方面,本发明实施例提供一种消息处理方法,所述方法包括:
调用主线程创建多级环形缓冲区;
调用所述主线程唤醒多个消息处理线程;所述多个消息处理线程间存在级联关系;
调用所述多个消息处理线程对所述多级环形缓冲区中的待处理消息进行处理;各所述消息处理线程的输出数据存储于所述各消息处理线程对应的环形缓冲区中;各所述消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
在其中一个实施例中,所述方法还包括:
调用所述主线程对每个所述消息处理线程创建线程通信信号;所述线程通信信号用于指示各所述消息处理线程对上一级消息处理线程对应的环形缓冲区中的数据进行处理。
在其中一个实施例中,所述多个消息处理线程至少包括起始消息处理线程和终止消息处理线程,所述调用所述多个消息处理线程对所述多级环形缓冲区中的待处理消息进行处理,包括:
调用所述起始消息处理线程接收所述待处理消息,对所述待处理消息进行解析处理,将解析结果存入所述多级环形缓冲区的第一缓冲区,并释放起始线程通信信号;
通过所述起始线程通信信号调用所述终止消息处理线程,读取所述解析结果,对所述解析结果进行数据组包,并输出组包数据。
在其中一个实施例中,所述多个消息处理线程还包括至少一个中间消息处理线程,所述通过所述起始线程通信信号调用所述终止消息处理线程,读取所述解析结果,对所述解析结果进行数据组包,并输出组包数据之前,所述方法还包括:
通过所述起始线程通信信号调用所述中间消息处理线程,读取所述解析结果,根据所述解析结果对所述待处理消息进行数据格式转换,将转换结果存入所述多级环形缓冲区的第二缓冲区,并释放中间线程通信信号;
所述通过所述起始线程通信信号调用所述终止消息处理线程,读取所述解析结果,对所述解析结果进行数据组包,并输出组包数据,包括:
通过所述中间线程通信信号调用所述终止消息处理线程,读取所述转换结果,对所述转换结果进行数据组包,并输出组包数据。
在其中一个实施例中,所述线程通信信号包括信号量、管道、消息队列和套接字中的至少一种。
在其中一个实施例中,所述多级环形缓冲区采用先入先出的方式进行数据的读取。
在其中一个实施例中,所述调用所述主线程唤醒多个消息处理线程之后,所述方法还包括:
所述主线程从工作状态切换至休眠状态。
第二方面,本发明实施例提供一种消息处理装置,所述装置包括:
第一创建模块,用于调用主线程创建多级环形缓冲区;
唤醒模块,用于调用所述主线程唤醒多个消息处理线程;所述多个消息处理线程间存在级联关系;
处理模块,用于调用所述多个消息处理线程对所述多级环形缓冲区中的待处理消息进行处理;各所述消息处理线程的输出数据存储于所述各消息处理线程对应的环形缓冲区中;各所述消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
第三方面,本发明实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
调用主线程创建多级环形缓冲区;
调用所述主线程唤醒多个消息处理线程;所述多个消息处理线程间存在级联关系;
调用所述多个消息处理线程对所述多级环形缓冲区中的待处理消息进行处理;各所述消息处理线程的输出数据存储于所述各消息处理线程对应的环形缓冲区中;各所述消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
调用主线程创建多级环形缓冲区;
调用所述主线程唤醒多个消息处理线程;所述多个消息处理线程间存在级联关系;
调用所述多个消息处理线程对所述多级环形缓冲区中的待处理消息进行处理;各所述消息处理线程的输出数据存储于所述各消息处理线程对应的环形缓冲区中;各所述消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
上述实施例提供的消息处理方法、装置、计算机设备和存储介质中,计算机设备调用主线程创建多级环形缓冲区,调用主线程唤醒多个消息处理线程,调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理,各消息处理线程的输出数据存储于各消息处理线程对应的环形缓冲区中,各消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据,在该方法中,计算机设备能够调用主线程唤醒多个消息处理线程,且多个消息处理线程间存在级联关系,多个消息处理线程能够分别对多级环形缓冲区中的待处理消息进行单一逻辑处理,能够实现对待处理数据的层层处理,实现对待处理数据的快速转移,从而提高对待处理消息的处理效率;另外,计算机设备调用主线程创建的多级环形缓冲区,多级环形缓冲区为一个指定空间大小的缓冲区,空间可以循环利用,能够实现对待处理消息的存储,避免了对待处理消息存储时的数据拥塞问题,进而提高了对待处理消息的处理效率。
附图说明
图1为一个实施例提供的消息处理方法的应用环境图;
图2为一个实施例提供的消息处理方法的流程示意图;
图3为一个实施例提供的多级环形缓冲区示意图;
图4为一个实施例提供的多个消息处理线程的工作原理示意图;
图5为一个实施例提供的信号量工作原理示意图;
图6为另一个实施例提供的消息处理方法的流程示意图;
图7为一个实施例提供的消息处理装置结构示意图;
图8为另一个实施例提供的消息处理装置结构示意图;
图9为一个实施例提供的计算机设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的消息处理方法,可以应用于如图1所示的应用环境中。其中,第一短波电台102与第二短波电台104进行网络通信。其中,第一短波电台102用于接收待处理的消息,对待处理的消息进行处理,并将待处理消息的处理结果发送给第二短波电台104。
传统的短波电台通信控制软件存在消息处理效率低下的问题。为此,本发明实施例提供一种消息处理方法、装置、计算机设备和可读存储介质,旨在解决传统技术的如上技术问题。
下面以具体的实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为一个实施例提供的消息处理方法的流程示意图。图3为一个实施例提供的多级环形缓冲区示意图。图4为一个实施例提供的多个消息处理线程的工作原理示意图。本实施例涉及的是计算机设备调用主线程唤醒多个消息处理线程,调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理的具体实现过程。如图2所示,该方法可以包括:
S201,调用主线程创建多级环形缓冲区。
具体的,计算机设备调用主线程创建多级环形缓冲区。其中,多级环形缓冲区是一个指定空间大小的缓冲区,空间可以循环利用。如图3所示,多级环形缓冲区通常有一个读指针和一个写指针,读指针指向多级环形缓冲区中可读的数据,写指针指向多级环形缓冲区中可写的缓冲区,在多级环形缓冲区中通过移动读指针和写指针就可以实现多级环形缓冲区的数据读取和写入。可选的,多级环形缓冲区中可以保存有多个待处理的消息。可选的,待处理的消息可以以格式化的方式顺序存入,以格式化的方式顺序读取。
S202,调用主线程唤醒多个消息处理线程;多个消息处理线程间存在级联关系。
具体的,计算机设备调用上述主线程唤醒多个消息处理线程,其中,多个消息处理线程间存在级联关系,多个消息处理线程间彼此相互配合,每个消息处理线程遵循单一职责原则,负责本消息处理线程所对应的处理操作。可选的,计算机设备可以通过调用主线程,对多个消息处理线程发送唤醒指令,唤醒多个消息处理线程。
S203,调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理;各消息处理线程的输出数据存储于各消息处理线程对应的环形缓冲区中;各消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
具体的,计算机设备调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理,其中,各消息处理线程的输出数据存储于各消息处理线程对应的环形缓冲区中,各消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。示例性地,如图4所示,多个消息处理线程的工作原理为,数据入口接收到数据后,第一消息处理线程即图4中的一级缓存对数据进行相应的处理,将处理结果传送到第二消息处理线程即二级缓存,二级缓存对接收的数据进行本级所对应的处理后,将处理结果传送到第三消息处理线程即三级缓存,三级缓存对接收的数据进行本级所对应的处理后,将处理结果通过数据出口输出。
在本实施例中,计算机设备能够调用主线程唤醒多个消息处理线程,且多个消息处理线程间存在级联关系,多个消息处理线程能够分别对多级环形缓冲区中的待处理消息进行单一逻辑处理,能够实现对待处理数据的层层处理,实现对待处理数据的快速转移,从而提高对待处理消息的处理效率;另外,计算机设备调用主线程创建的多级环形缓冲区,多级环形缓冲区为一个指定空间大小的缓冲区,空间可以循环利用,能够实现对待处理消息的存储,避免了对待处理消息存储时的数据拥塞问题,进而提高了对待处理消息的处理效率。
图5为一个实施例提供的信号量工作原理示意图。在上述实施例的基础上,作为一种可选的实施方式,上述方法还包括:调用主线程对每个消息处理线程创建线程通信信号;线程通信信号用于指示各消息处理线程对上一级消息处理线程对应的环形缓冲区中的数据进行处理。
具体的,计算机设备调用主线程对每个消息处理线程创建线程通信信号,其中,线程通信信号用于指示各消息处理线程对上一级消息处理线程对应的环形缓冲区中的数据进行处理。线程通信信号作为线程通信间的一种基本方式,在多线程环境下使用时,负责协调各个线程,实现各线程间的通信。可选的,线程通信信号包括信号量、管道、消息队列和套接字中的至少一种。示例性地,以信号量为例来说明线程通信信号的工作原理,如图5所示,线程1收到数据进行写缓存操作后,释放信号量,之后处于休眠等待状态,线程2申请信号量,在接收到线程1释放的信号量后,进行读缓存操作之后处于休眠等待状态。
在本实施例中,计算机设备调用主线程对每个消息处理线程创建线程通信信号,各线程通信信号能够负责协调各消息处理线程,保证各消息处理线程能够准确、合理的对上一级消息处理线程对应的环形缓冲区中的数据进行处理,使各消息处理线程能够快速、高效地实现线程间的通信。
图6为另一个实施例提供的消息处理方法的流程示意图。在上述计算机设备调用主线程唤醒多个消息处理线程的场景中,多个消息处理线程至少包括起始消息处理线程和终止消息处理线程。本实施例涉及的是计算机设备调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理的具体实现过程。如图6所示,在上述实施例的基础上,作为一种可选的实施方式,上述S203,包括:
S601,调用起始消息处理线程接收待处理消息,对待处理消息进行解析处理,将解析结果存入多级环形缓冲区的第一缓冲区,并释放起始线程通信信号。
具体的,计算机设备调用起始消息处理线程接收多级环形缓冲区中的待处理消息,对待处理消息进行解析处理,将解析结果存入多级环形缓冲区的第一缓冲区,并释放起始线程通信信号。可选的,起始消息处理线程可以对待处理消息进行协议解析处理。可选的,起始消重处理线程可以对待处理消息进行数据通信协议解析,也可以对待处理消息进行超文本传输协议(Hyper Text Transfer Protocol,HTTP)的解析。
S602,通过起始线程通信信号调用终止消息处理线程,读取解析结果,对解析结果进行数据组包,并输出组包数据。
具体的,终止消息处理线程处于阻塞休眠状态,起始消息处理线程释放起始线程通信信号后,计算机设备通过起始线程通信信号调用终止消息处理线程,读取上述解析结果,对解析结果进行数据组包,并输出组包数据。
在本实施例中,计算机设备调用起始消息处理线程接收待处理消息,对待处理消息进行解析处理,将解析结果存入多级环形缓冲区的第一缓冲区,并释放起始线程通信信号,计算机设备通过起始线程通信信号调用终止消息处理线程,读取解析结果,对解析结果进行数据组包,并输出组包数据,通过起始线程通信信号保证了终止消息处理线程能够准确、合理的对起始消息处理线程对应的环形缓冲区中的数据进行处理,能够快速、高效地实现起始消息处理线程与终止消息处理线程间的通信。
在上述计算机设备调用主线程唤醒多个消息处理线程的场景中,多个消息处理线程还包括至少一个中间消息处理线程,在上述实施例的基础上,作为一种可选的实施方式,上述S602之前,上述方法还包括:通过起始线程通信信号调用中间消息处理线程,读取解析结果,根据解析结果对待处理消息进行数据格式转换,将转换结果存入多级环形缓冲区的第二缓冲区,并释放中间线程通信信号;S602,包括通过中间线程通信信号调用终止消息处理线程,读取转换结果,对转换结果进行数据组包,并输出组包数据。
具体的,计算机设备调用主线程唤醒的多个消息处理线程中,多个消息处理线程还包括至少一个中间消息处理线程,则计算机设备调用多个消息处理线程对待处理消息的处理过程包括:计算机设备调用起始消息处理线程接收待处理消息,对待处理消息进行解析处理,将解析处理结果存入多级环形缓冲区的第一缓冲区,并释放起始线程通信信号后,计算机设备通过起始线程通信信号调用中间消息处理线程,读取解析结果,根据解析结果对待处理消息进行数据格式转换,将转换结果存入多级环形缓冲区的第二缓冲区,并释放中间线程通信信号,计算机设备通过中间线程通信信号调用终止消息处理线程,读取转换结果,对转换结果进行数据组包,并输出组包数据。
在本实施例中,计算机设备调用主线程唤醒的多个消息处理线程还包括至少一个中间消息处理线程,计算机设备可以根据不同的应用场景确定中间消息处理线程的数量,当计算机设备调用主线程唤醒的多个消重处理线程还包括至少一个中间消息处理线程时,计算机设备通过起始线程通信信号调用中间消息处理线程,读取解析结果,根据解析结果对待处理消息进行数据格式转换,将转换结果存入多级环形缓冲区的第二缓冲区,并释放中间线程通信信号,计算机设备通过中间线程通信信号调用终止消息处理线程,读取转换结果,对转换结果进行数据组包,并输出组包数据,通过起始线程通信信号以及中间线程通信信号保证了中间消息处理线程能够准确、合理的对起始消息处理线程对应的环形缓冲区中的数据进行处理,终止消息处理线程能够准确、合理的对中间消息处理线程对应的环形缓冲区中的数据进行处理,快速、高效地实现起始消息处理线程、中间消息处理线程以及终止消息处理线程间的通信。
在上述调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理的场景中,在上述实施例的基础上,作为一种可选的实施方式,多级环形缓冲区采用先入先出的方式进行数据的读取。
具体的,计算机设备调用主线程创建的多级环形缓冲区采用先入先出的方式进行数据的读取,即首先读取先存入的数据。在本实施例中,多级环形缓冲区采用先入先出的方式进行数据的读取,能够使多级环形缓冲区循环利用,能够使多级环形缓冲区进行多个数据的存储,有效地提升了多级环形缓冲区使用的安全性和使用效率。
在上述计算机设备调用主线程唤醒多个消息处理线程的场景中,在上述实施例的基础上,作为一种可选的实施方式,上述S202之后,上述方法还包括:主线程从工作状态切换至休眠状态。
具体的,计算机设备调用主线程唤醒多个消息处理线程之后,主线程从工作状态切换至休眠状态,多个消息处理线程处于工作状态。在本实施例中,计算机设备调用主线程唤醒多个消息处理线程之后,主线程从工作状态切换至休眠状态,多个消息处理线程处于工作状态,主线程与多个消息处理线程遵循单一职责原则,完成对应的处理后便从工作状态切换至休眠状态,降低了主线程与多个消息处理线程间的耦合度,提高了主线程与多个消息处理线程的可维护性。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图7为一个实施例提供的消息处理装置结构示意图。如图7所示,该装置可以包括:第一创建模块10、唤醒模块11和处理模块12。
具体的,第一创建模块10,用于调用主线程创建多级环形缓冲区;
唤醒模块11,用于调用主线程唤醒多个消息处理线程;多个消息处理线程间存在级联关系;
处理模块12,用于调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理;各消息处理线程的输出数据存储于各消息处理线程对应的环形缓冲区中;各消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
可选的,线程通信信号包括信号量、管道、消息队列和套接字中的至少一种。
可选的,多级环形缓冲区采用先入先出的方式进行数据的读取。
可选的,唤醒模块11,还用于在调用主线程唤醒多个消息处理线程之后,将主线程从工作状态切换至休眠状态。
本实施例提供的消息处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图8为另一个实施例提供的消息处理装置结构示意图。在如图7所示实施例的基础上,可选的,上述装置还包括:第二创建模块13。
具体的,第二创建模块13,用于调用主线程对每个消息处理线程创建线程通信信号;线程通信信号用于指示各消息处理线程对上一级消息处理线程对应的环形缓冲区中的数据进行处理。
本实施例提供的消息处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
请继续参见图8,在上述实施例的基础上,可选的,多个消息处理线程至少包括起始消息处理线程和终止消息处理线程,可选的,如图8所示,上述处理模块12包括:第一处理单元121和第二处理单元122。
具体的,第一处理单元121,用于调用起始消息处理线程接收待处理消息,对待处理消息进行解析处理,将解析结果存入多级环形缓冲区的第一缓冲区,并释放起始线程通信信号;
第二处理单元122,用于通过起始线程通信信号调用终止消息处理线程,读取解析结果,对解析结果进行数据组包,并输出组包数据。
本实施例提供的消息处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
请继续参见图8,在上述实施例的基础上,可选的,多个消息处理线程还包括至少一个中间消息处理线程,可选的,上述处理模块12还包括:第三处理单元123。
具体的,第三处理单元123,用于通过起始线程通信信号调用中间消息处理线程,读取解析结果,根据解析结果对待处理消息进行数据格式转换,将转换结果存入多级环形缓冲区的第二缓冲区,并释放中间线程通信信号;
可选的,第二处理单元122,具体用于通过中间线程通信信号调用终止消息处理线程,读取转换结果,对转换结果进行数据组包,并输出组包数据。
本实施例提供的消息处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
关于消息处理装置的具体限定可以参见上文中对于消息处理方法的限定,在此不再赘述。上述消息处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请实施例提供的消息处理方法,可以适用于如图9所示的计算机设备。该计算机设备包括通过***总线连接的处理器、存储器,该存储器中存储有计算机程序,处理器执行该计算机程序时可以执行下述方法实施例的步骤。可选的,该计算机设备还可以包括网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器,该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。可选的,该计算机设备可以是服务器,可以是个人计算机,还可以是个人数字助理,还可以是其他的终端设备,例如平板电脑、手机等等,还可以是云端或者远程服务器,本申请实施例对计算机设备的具体形式并不做限定。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
调用主线程创建多级环形缓冲区;
调用主线程唤醒多个消息处理线程;多个消息处理线程间存在级联关系;
调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理;各消息处理线程的输出数据存储于各消息处理线程对应的环形缓冲区中;各消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
上述实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
调用主线程创建多级环形缓冲区;
调用主线程唤醒多个消息处理线程;多个消息处理线程间存在级联关系;
调用多个消息处理线程对多级环形缓冲区中的待处理消息进行处理;各消息处理线程的输出数据存储于各消息处理线程对应的环形缓冲区中;各消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
上述实施例提供的可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种消息处理方法,其特征在于,应用于短波电台通信控制软件,所述方法包括:
调用主线程创建多级环形缓冲区;所述多级环形缓冲区包括一个读指针和一个写指针,所述读指针指向所述多级环形缓冲区中可读的数据,所述写指针指向所述多级环形缓冲区中可写的缓冲区,在所述多级环形缓冲区中通过移动所述读指针和所述写指针就可以实现所述多级环形缓冲区的数据读取和写入;
调用所述主线程唤醒多个消息处理线程;所述多个消息处理线程间存在级联关系;所述多个消息处理线程至少包括起始消息处理线程、终止消息处理线程以及至少一个中间消息处理线程;
调用所述主线程对每个所述消息处理线程创建线程通信信号;所述线程通信信号用于指示各所述消息处理线程对上一级消息处理线程对应的环形缓冲区中的数据进行处理;所述线程通信信号包括信号量、管道、消息队列和套接字中的至少一种;
根据各所述线程通信信号,调用所述多个消息处理线程对所述多级环形缓冲区中的待处理消息进行处理,包括:调用所述起始消息处理线程接收所述待处理消息,对所述待处理消息进行解析处理,将解析结果存入所述多级环形缓冲区的第一缓冲区,并释放起始线程通信信号;通过所述起始线程通信信号调用所述中间消息处理线程,读取所述解析结果,根据所述解析结果对所述待处理消息进行数据格式转换,将转换结果存入所述多级环形缓冲区的第二缓冲区,并释放中间线程通信信号;通过所述中间线程通信信号调用所述终止消息处理线程,读取所述转换结果,对所述转换结果进行数据组包,并输出组包数据;各所述消息处理线程的输出数据存储于所述各消息处理线程对应的环形缓冲区中;各所述消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
2.根据权利要求1所述的方法,其特征在于,所述多级环形缓冲区采用先入先出的方式进行数据的读取。
3.根据权利要求1所述的方法,其特征在于,所述调用所述主线程唤醒多个消息处理线程之后,所述方法还包括:
所述主线程从工作状态切换至休眠状态。
4.根据权利要求1所述的方法,其特征在于,所述多级环形缓冲区中保存有多个待处理的消息。
5.根据权利要求1所述的方法,其特征在于,所述起始消息处理线程对所述待处理消息进行协议解析处理。
6.根据权利要求5所述的方法,其特征在于,所述起始消息处理线程对所述待处理消息进行超文本传输协议的解析。
7.根据权利要求5所述的方法,其特征在于,所述起始消息处理线程对所述待处理消息进行数据通信协议解析。
8.一种消息处理装置,其特征在于,应用于短波电台通信控制软件,所述装置包括:
第一创建模块,用于调用主线程创建多级环形缓冲区;所述多级环形缓冲区包括一个读指针和一个写指针,所述读指针指向所述多级环形缓冲区中可读的数据,所述写指针指向所述多级环形缓冲区中可写的缓冲区,在所述多级环形缓冲区中通过移动所述读指针和所述写指针就可以实现所述多级环形缓冲区的数据读取和写入;
唤醒模块,用于调用所述主线程唤醒多个消息处理线程;所述多个消息处理线程间存在级联关系;所述多个消息处理线程至少包括起始消息处理线程、终止消息处理线程以及至少一个中间消息处理线程;
第二创建模块,用于调用所述主线程对每个所述消息处理线程创建线程通信信号;所述线程通信信号用于指示各所述消息处理线程对上一级消息处理线程对应的环形缓冲区中的数据进行处理;所述线程通信信号包括信号量、管道、消息队列和套接字中的至少一种;
处理模块,用于根据各所述线程通信信号,调用所述多个消息处理线程对所述多级环形缓冲区中的待处理消息进行处理,包括:调用所述起始消息处理线程接收所述待处理消息,对所述待处理消息进行解析处理,将解析结果存入所述多级环形缓冲区的第一缓冲区,并释放起始线程通信信号;通过所述起始线程通信信号调用所述中间消息处理线程,读取所述解析结果,根据所述解析结果对所述待处理消息进行数据格式转换,将转换结果存入所述多级环形缓冲区的第二缓冲区,并释放中间线程通信信号;通过所述中间线程通信信号调用所述终止消息处理线程,读取所述转换结果,对所述转换结果进行数据组包,并输出组包数据;各所述消息处理线程的输出数据存储于所述各消息处理线程对应的环形缓冲区中;各所述消息处理线程的输入数据为上一级消息处理线程对应的环形缓冲区中的数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910500654.3A CN110287023B (zh) | 2019-06-11 | 2019-06-11 | 消息处理方法、装置、计算机设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910500654.3A CN110287023B (zh) | 2019-06-11 | 2019-06-11 | 消息处理方法、装置、计算机设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110287023A CN110287023A (zh) | 2019-09-27 |
CN110287023B true CN110287023B (zh) | 2021-12-10 |
Family
ID=68004401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910500654.3A Active CN110287023B (zh) | 2019-06-11 | 2019-06-11 | 消息处理方法、装置、计算机设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110287023B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209123A (zh) * | 2019-12-26 | 2020-05-29 | 天津中科曙光存储科技有限公司 | 一种本地存储io协议栈数据交互方法和装置 |
CN113760570A (zh) * | 2021-01-07 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 数据处理方法、装置、电子设备、***和存储介质 |
CN117076139B (zh) * | 2023-10-17 | 2024-04-02 | 北京融为科技有限公司 | 数据处理方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780625A (zh) * | 2012-07-30 | 2012-11-14 | 成都卫士通信息产业股份有限公司 | 一种实现ipsec vpn加解密处理的方法及装置 |
CN104346227A (zh) * | 2013-07-23 | 2015-02-11 | 比亚迪股份有限公司 | 用于can总线的数据分发方法和装置 |
EP3073382A1 (en) * | 2008-02-08 | 2016-09-28 | Inetco Systems Limited | A multi-reader lock-free ring buffer |
CN108984283A (zh) * | 2018-06-25 | 2018-12-11 | 复旦大学 | 一种自适应的动态流水线并行方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100131679A1 (en) * | 2008-11-24 | 2010-05-27 | Jian-Bang Lin | Apparatus for performing a downlink or uplink processing in a wireless communication system to maintain the efficiency of system bandwidth, and associated methods |
CN101644763B (zh) * | 2008-12-12 | 2012-12-12 | 中国科学院声学研究所 | 基于集群处理机的合成孔径声纳实时信号处理方法及*** |
KR101271211B1 (ko) * | 2009-08-18 | 2013-06-07 | 한국전자통신연구원 | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 |
US9202047B2 (en) * | 2012-05-14 | 2015-12-01 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
CN107665155B (zh) * | 2016-07-28 | 2021-07-09 | 华为技术有限公司 | 处理数据的方法和装置 |
CN106992856B (zh) * | 2017-03-29 | 2020-09-29 | 山西大学 | 基于gpu的大规模连续变量量子密钥分发的数据协调方法 |
CN107479955B (zh) * | 2017-08-04 | 2020-04-17 | 南京华飞数据技术有限公司 | 一种基于Epoll异步服务器的高效响应方法 |
US10353629B2 (en) * | 2017-09-19 | 2019-07-16 | Arm Limited | Handling in-order and out-of-order ring buffer updates |
-
2019
- 2019-06-11 CN CN201910500654.3A patent/CN110287023B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3073382A1 (en) * | 2008-02-08 | 2016-09-28 | Inetco Systems Limited | A multi-reader lock-free ring buffer |
CN102780625A (zh) * | 2012-07-30 | 2012-11-14 | 成都卫士通信息产业股份有限公司 | 一种实现ipsec vpn加解密处理的方法及装置 |
CN104346227A (zh) * | 2013-07-23 | 2015-02-11 | 比亚迪股份有限公司 | 用于can总线的数据分发方法和装置 |
CN108984283A (zh) * | 2018-06-25 | 2018-12-11 | 复旦大学 | 一种自适应的动态流水线并行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110287023A (zh) | 2019-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110287023B (zh) | 消息处理方法、装置、计算机设备和可读存储介质 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
TW201904229A (zh) | 資料處理的方法及裝置 | |
CN109756536A (zh) | 一种数据传输的方法、装置及*** | |
US20210153072A1 (en) | Buffer status reporting method, terminal, and computer storage medium | |
CN105676023A (zh) | 故障录波数据的记录方法和*** | |
US10452402B2 (en) | Operation instruction response control method and terminal for human-machine interface | |
CN107589990B (zh) | 一种基于线程池的数据通讯的方法及*** | |
CN114095438B (zh) | 数据传输方法、装置、设备、存储介质及计算机程序产品 | |
CN109743757B (zh) | 数据处理方法、装置、无线模组和物联网设备 | |
US8984078B2 (en) | Systems and methods for device-to-cloud message delivery | |
CN111614577A (zh) | 一种多通信任务管理方法、装置和计算机设备 | |
CN112000446A (zh) | 一种数据传输的方法及机器人 | |
US9753769B2 (en) | Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof | |
WO2023221949A1 (zh) | 一种模型调度方法、设备及存储介质 | |
CN111405534B (zh) | 信息传输方法、第一终端及计算机存储介质 | |
CN115756143B (zh) | 数据包处理的节能方法、装置、计算机设备和存储介质 | |
CN110909359A (zh) | 基于双***架构的通信方法及终端设备 | |
CN108139969A (zh) | 一种内存配置方法、装置及*** | |
US11216320B2 (en) | Method and apparatus for communication between processes | |
CN115599571A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN112559404A (zh) | 一种数据调度装置、方法和加速处理芯片 | |
CN109862044B (zh) | 一种转换装置、网络设备及数据传输方法 | |
CN112512031A (zh) | 一种应用于5g网络的数据采集方法和5g网络 | |
CN110442436A (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 |