CN114443242A - 一种信号处理软件组件化架构和软件开发方法 - Google Patents

一种信号处理软件组件化架构和软件开发方法 Download PDF

Info

Publication number
CN114443242A
CN114443242A CN202111578537.2A CN202111578537A CN114443242A CN 114443242 A CN114443242 A CN 114443242A CN 202111578537 A CN202111578537 A CN 202111578537A CN 114443242 A CN114443242 A CN 114443242A
Authority
CN
China
Prior art keywords
function
wrapper
signal processing
package
module
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
Application number
CN202111578537.2A
Other languages
English (en)
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 Institute of Radio Measurement
Original Assignee
Beijing Institute of Radio Measurement
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 Institute of Radio Measurement filed Critical Beijing Institute of Radio Measurement
Priority to CN202111578537.2A priority Critical patent/CN114443242A/zh
Publication of CN114443242A publication Critical patent/CN114443242A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • G06F9/5016Allocation 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 the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本方案公开了一种信号处理软件组件化架构和软件开发方法,其中,所述架构包括:资源模块,基于线程池为计算模块提供运行环境和加速资源;调度模块,统一管理资源模块,并根据用户需求,调度计算模块运行;通信模块,用于支撑调度模块与计算模块之间,以及,计算模块之间的相互通信;计算模块,基于调度模块的调度,在相应的线程上运行,以完成信号处理任务。该方案制定了信号处理组件的接口规范,提供了信号处理软件组件化运行框架,解决了传统软件开发中高度耦合、不易扩展的问题,最终提高了信号处理软件模块的复用度、开发效率和集成效率。

Description

一种信号处理软件组件化架构和软件开发方法
技术领域
本发明涉及计算机处理技术领域。更具体地,涉及一种信号处理软件组件化架构和软件开发方法。
背景技术
雷达信号处理是雷达系统的重要组成部分,其主要功能是对雷达回波信号进行实时处理,实现目标探测和跟踪。传统的雷达信号处理软件开发方法中将处理任务与计算核心绑定,优点是符合直观思维,便于直接开发,不需要设计复杂的调度框架。但缺点也很明显,由于任务将核心独占,导致即使某一任务暂时不运行其对应的计算核心只能处于空闲状态,不能进行其它任务,这样大大降低了计算资源的利用率;而且当系统扩展核心数后,需要重新更改任务代码,才能将增加的核心数利用起来,不具有良好的扩展性。
此外,传统信号处理软件开发中各个功能模块之间通过相互调用对方接口实现通信。当模块功能简单时,该方法可以快速实现功能,但是随着功能的增多各个模块的耦合度会越来越高,极大地增加了后期的软件开发工作量与维护成本。
发明内容
本发明的目的在于提供一种信号处理软件组件化架构和软件开发方法。
为达到上述目的,本方案采用下述技术方案:
第一方面,本方案提供一种信号处理软件组件化架构,该方法的步骤包括:
资源模块,基于线程池为计算模块提供运行环境和加速资源;
调度模块,统一管理资源模块,并根据用户需求,调度计算模块运行;
通信模块,用于支撑调度模块与计算模块之间,以及,计算模块之间的相互通信;
计算模块,基于调度模块的调度,在相应的线程上运行,以完成信号处理任务。
第二方面,本方案提供一种信号处理软件组件化软件开发方法,该方法的步骤包括:
调用manageStart函数启动管理者manage;
管理者manage从线程池获得三个子线程,一个子线程运行manageLoop函数,另外两个子线程分别运行发送包裹send wrapper和接收包裹recv wrapper的start函数;
包裹wrapper的start函数内部会调用组件的process函数;
manageLoop函数内部通过第一端口循环获取接收包裹recv wrapper的消息,接收到消息后调用选择处理包裹回调函数selectProcWrapperCal lback,确定下一步要激活的处理包裹proc wrapper;
获得一个子线程运行所述处理包裹proc wrapper,并通过第二端口将消息发送给所述处理包裹proc wrapper。
第三方面,本方案提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的方法。
第四方面,本方案提供一种计算设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行如上所述的方法。
本发明的有益效果如下:
本方案能够有效解决任务与计算核心高度耦合的问题,避免软件模块之间高度耦合的问题,有效提高软件模块在性能方面的扩展性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本方案所述信号处理软件组件化架构的示意图;
图2示出本方案所述处理软件组件化程序内部运行的示意图;
图3示出本方案所述包裹调用组件的一种实例的示意图;
图4示出本方案所述包裹调用组件的另一种实例的示意图;
图5示出本方案所述电子设备的示意图。
具体实施方式
为使本发明的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件需要具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
需要说明的是,本申请实施例方法由于是在计算设备中执行,各计算设备的处理对象均以数据或信息的形式存在,例如时间,实质为时间信息,可以理解的是,后续实施例中若提及尺寸、数量、位置等,均为对应的数据存在,以便电子设备进行处理,具体此处不作赘述。
在本申请一个典型的配置中,终端或可信方等均包括一个或多个处理器,例如,中央处理器(Central Processing Unit,CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(Random Access Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(FlashMemory)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-Change Memory,PCM)、可编程随机存取存储器(Programmable Random Access Memory,PRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Versatile Disc,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请所指设备包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备包括但不限于任何一种可与用户进行人机交互(例如通过触摸板进行人机交互)的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作系统,如Android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、数字信号处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述网络设备包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,所述设备还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的程序。
当然,本领域技术人员应能理解上述设备仅为举例,其他现有的或今后可能出现的设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
本方案旨在针对现有技术中存在的,随着功能的增多各个模块的耦合度会越来越高,极大地增加了后期的软件开发工作量与维护成本的问题,提供了一种信号处理软件组件化架构和处理方法。
以下,结合附图对本方案提出的一种信号处理软件组件化架构和软件开发方法进行详细描述。
本方法的信号处理软件组件化架构设计原理如图1所示,该架构中,一个计算节点的所有计算核心被例化为多个线程(Thread),这些线程构成了该节点的统一计算资源接口——线程池(ThreadPool)。线程池的计算资源由管理者(Manage)调度管理,管理者会将不同的包裹(Wrapper)运行在不同的线程上。包裹是基于端口(Port)进行通信的,完成不同的波形处理任务,具有特定接口规范的程序模块,包裹由一个或多个组件(Component)构成。组件是具有特定接口规范,相互独立,可被单独部署也可被第三方组装的信号处理基础功能库。
本方法的组件化架构自底向上将系统功能分为4个层次:资源、调度、通信和计算,信号处理任务可以被描述为在一定的资源上,通过一定的调度,借助一定的通信,完成一定的计算。线程池位于资源层次,它为包裹提供运行环境和加速资源;管理者位于调度层次,调度所有包裹的运行;端口位于通信层次,实现管理者与包裹、包裹之间以及组件之间的相互通信;包裹和组件位于计算层次,实现信号处理任务,目前根据信号处理系统特点将包裹分为三类——接收数据包裹(Receive Wrapper)、处理数据包裹(Process Wrapper)和发送结果包裹(Send Wrapper)。包裹被管理者调度运行之后,会在其内部按照特定的顺序调用各个组件。
本方法的组件化程序内部运行流程如图2所示:
1)首先,程序启动之初,利用manageInit函数对manage进行初始化,该函数内部主要是创建线程池和wrapper注册表。
2)然后,利用各个wrapperInit函数对各个wrapper进行初始化。
3)接着,调用manageSet/Add函数将各个wrapper注册到manage中,注册过程中会调用wrapper的create函数,而wrapper的create函数内部又会调用component的create函数。
4)然后,调用manageStart函数启动manage,manage会从线程池获得三个子线程,一个子线程运行manageLoop函数,另外两个子线程运行send wrapper和recv wrapper的start函数,而wrapper的start函数内部会调用组件的process函数。manageLoop函数内部通过端口1循环接收recv wrapper的消息,接收到消息后调用选择处理包裹回调函数(selectProcWrapperCal lback),从而得知下一步要激活哪个proc wrapper,然后获得一个子线程运行该wrapper的start函数,并通过端口2将消息发送给这个proc wrapper。
5)当用户输入结束指令时,manageStop函数会被调用,该函数会使manageLoop退出循环,并调用所有wrapper的stop函数,使运行在子线程上的wrapper start函数一一退出。
6)最后,在程序退出前,利用manageUnInit函数将manage、wrapper和component逐级销毁。
以上流程中,调用manageStart函数后,程序至少占用4个子线程:一个运行manageLoop的子线程,一个运行recv wrapper的子线程,一个运行proc wrapper的子线程和一个运行send wrapper的子线程。这些子线程都是由线程池提供,由管理者统一调度。
参照表1,为本发明的组件和包裹的接口规范,开发组件和包裹需要遵循该接口规范才能被组件化架构调度运行。
Figure BDA0003425399170000061
Figure BDA0003425399170000071
组件和包裹需要定义新的结构体,且第一个成员需要是对应的基础结构体Component或Wrapper。
组件需要实现三个接口函数——create、process和destroy,包裹需要实现四个接口函数——create、start、stop和destroy。包裹由一个或多个组件组成,包裹的接口函数会调用对应的组件接口函数,其中create负责内存分配等创建工作,process、start和stop负责信号处理任务,destroy负责内存释放等销毁工作。
每个组件或每个包裹需要实现一个初始化函数,用于完成接口函数与结构体基础成员变量的映射。
开发组件的具体实施例1
步骤1,创建两个文件。
一个头文件和一个源文件。
步骤2,在头文件中定义组件的结构体。
结构体内第一个变量必须是Component变量,表示该结构体类型继承于Component。其它变量可由开发者按需定义,比如端口、内存资源、参数信息等。
步骤3,实现组件的初始化函数。
在头文件中声明初始化函数,在源文件中编写初始化函数的具体实现,该函数主要完成Component的句柄指针与组件实体的映射,以及三个接口函数指针与实际函数的映射。
步骤4,在源文件中实现三个接口函数。
三个接口函数都被定义为静态函数,以此表示本组件私有。三个接口函数需要有返回值,正确返回0,错误返回非0。
组件的create函数主要完成组件的初始化,比如分配内存,初始化参数信息、配置加速线程数等。
组件的destroy函数与create函数相对应,主要完成组件的销毁工作。
组件的process函数主要完成信号处理任务,包括接收端口数据、处理数据、向端口发送数据等。process函数在使用加速线程时,主要使用两个函数——threadExeTask和threadsSync,第一个用于执行异步任务,第二个用于同步异步任务。
步骤5,写明组件注释。
组件注释是对自身功能、收发数据格式以及特殊资源使用情况的详细说明,有了组件注释包裹才能对组件进行组装。
开发组件的具体实施例2
开发包裹的实施方式包括以下具体步骤:
步骤1,创建两个文件。
一个头文件和一个源文件。
步骤2,在头文件中定义包裹的结构体。
结构体内第一个变量必须是Wrapper变量,表示该结构体类型继承于Wrapper。其它变量可由开发者按需定义,比如内存资源、参数信息等。
步骤3,实现包裹的初始化函数。
在头文件中声明初始化函数,在源文件中编写初始化函数的具体实现,该函数主要完成Wrapper的句柄指针与包裹实体的映射,以及四个接口函数指针与实际函数的映射。
步骤4,在源文件中实现四个接口函数。
四个接口函数都被定义为静态函数,以此表示本包裹私有。四个接口函数必须有返回值,正确返回0,错误返回非0。
包裹的create函数要完成的主要工作有:创建组件、初始化组件、创建端口、连接组件、执行组件create函数、统计各组件的加速线程数。
包裹的destroy函数与create函数相对应,主要完成包裹销毁工作,比如内存销毁、端口销毁等。
包裹的start函数完成的主要工作有:以特定的方式运行各个组件的process函数,并为组件提供加速线程。
包裹调用组件支持多种方式,图3和图4所示常用的两种方式:一种是各个组件之间通过端口相连,另一种是包裹直接调用组件的process函数。
包裹的stop函数与start函数相对应,stop函数主要用于结束start函数或者等待start函数执行完毕。
步骤5,写明包裹注释。
包裹注释是对自身功能、收发数据格式以及特殊资源使用情况的详细说明,有了包裹注释开发者才能对资源需求进行汇总,以此初始化线程池等系统资源。
综上所述,该方法制定了信号处理组件的接口规范,提供了信号处理软件组件化运行框架,解决了传统软件开发中高度耦合、不易扩展的问题,最终提高了信号处理软件模块的复用度、开发效率和集成效率。
在上述软件开发方法实施方式的基础上,本方案进一步提供一种计算机可读存储介质。该计算机可读存储介质用于实现上述软件开发方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在设备,例如个人电脑上运行。然而,本方案的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本方案操作的程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、C++等,还包括常规的过程式程序设计语言-诸如"C"语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在上述软件开发方法实施方式的基础上,本方案进一步提供一种电子设备。如图5所示电子设备仅仅是一个示例,不应对本方案实施例的功能和使用范围带来任何限制。
如图5所示,电子设备201以通用计算设备的形式表现。电子设备201的组件可以包括但不限于:至少一个存储单元202、至少一个处理单元203、显示单元204和用于连接不同系统组件的总线205。
其中,所述存储单元202存储有程序代码,所述程序代码可以被所述处理单元203执行,使得所述处理单元203执行上述设备征兆信息获取方法中描述的各种示例性实施方式的步骤。例如,所述处理单元203可以执行软件开发方法的步骤。
存储单元202可以包括易失性存储单元,例如随机存取存储单元(RAM)和/或高速缓存存储单元,还可以进一步包括只读存储单元(ROM)。
存储单元202还可以包括具有程序模块的程序/实用工具,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线205可以包括数据总线、地址总线和控制总线。
电子设备201也可以与一个或多个外部设备207(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(I/O)接口206进行。应当明白,尽管图中未示出,可以结合电子设备201使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

Claims (9)

1.一种信号处理软件组件化架构,其特征在于,该方法的步骤包括:
资源模块,基于线程池为计算模块提供运行环境和加速资源;
调度模块,统一管理资源模块,并根据用户需求,调度计算模块运行;
通信模块,用于支撑调度模块与计算模块之间,以及,计算模块之间的相互通信;
计算模块,基于调度模块的调度,在相应的线程上运行,以完成信号处理任务。
2.一种信号处理软件组件化软件开发方法,其特征在于,该方法的步骤包括:
调用manageStart函数启动管理者manage;
管理者manage从线程池获得三个子线程,一个子线程运行manageLoop函数,另外两个子线程分别运行发送包裹send wrapper和接收包裹recv wrapper的start函数;
manageLoop函数内部通过第一端口循环获取接收包裹recv wrapper的消息,接收到消息后调用选择处理包裹回调函数selectProcWrapperCallback,确定下一步要激活的处理包裹proc wrapper;
manageLoop函数获得一个子线程运行所述处理包裹proc wrapper的start函数,并通过第二端口将消息发送给所述处理包裹proc wrapper。
3.根据权利要求2所述的信号处理软件组件化软件开发方法,其特征在于,所述调用manageStart函数启动管理者manage的步骤之前包括:
对包裹进行创建和初始化。
4.根据权利要求3所述的信号处理软件组件化软件开发方法,其特征在于,所述对包裹进行创建和初始化的步骤包括:
利用manageInit函数对管理者manage进行初始化;其中,该manageInit函数完成对线程池和包裹注册表的创建;
利用wrapperInit函数对与其相对应的包裹wrapper进行初始化。
5.根据权利要求3或4所述的信号处理软件组件化软件开发方法,其特征在于,
调用manageSet/Add函数将每个包裹wrapper注册到管理者manage中;
注册过程中调用包裹wrapper的create函数,与此同时,包裹wrapper的create函数内部调用组件component的create函数。
6.根据权利要求2所述的信号处理软件组件化软件开发方法,其特征在于,该方法的步骤包括:
基于接收到的结束指令,调用manageStop函数;
所述manageStop函数触发manageLoop内部逐级调用包裹wrapper的stop函数,以使运行在子线程上的wrapper start函数一一退出。
7.根据权利要求6所述的信号处理软件组件化软件开发方法,其特征在于,该方法的步骤包括:
在所述退出前,利用manageUnInit函数将管理者、包裹和组件逐级销毁。
8.一种计算机存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求2至7任一项所述的方法。
9.一种计算设备,其特征在于,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行如权利要求2至7任一项所述的方法。
CN202111578537.2A 2021-12-22 2021-12-22 一种信号处理软件组件化架构和软件开发方法 Pending CN114443242A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111578537.2A CN114443242A (zh) 2021-12-22 2021-12-22 一种信号处理软件组件化架构和软件开发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111578537.2A CN114443242A (zh) 2021-12-22 2021-12-22 一种信号处理软件组件化架构和软件开发方法

Publications (1)

Publication Number Publication Date
CN114443242A true CN114443242A (zh) 2022-05-06

Family

ID=81364129

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111578537.2A Pending CN114443242A (zh) 2021-12-22 2021-12-22 一种信号处理软件组件化架构和软件开发方法

Country Status (1)

Country Link
CN (1) CN114443242A (zh)

Similar Documents

Publication Publication Date Title
US11829787B2 (en) Multi-process model for cross-platform applications
CN110716748B (zh) 业务处理方法、装置、计算机可读介质及电子设备
CN109032706B (zh) 智能合约执行方法、装置、设备和存储介质
US10862982B2 (en) Cloud-scale heterogeneous datacenter management infrastructure
US10521393B2 (en) Remote direct memory access (RDMA) high performance producer-consumer message processing
JP2004536382A (ja) 置換可能なサービス品質機能のあるネットワーク通信チャネルコンポーネントを選択するために、置換可能なコンポーネントを用いるシステム、方法及び製造物
US20120158794A1 (en) Techniques to discover object interfaces
US10848595B2 (en) Method and device for message sending and receiving based on a communication interface framework
EP3582125A1 (en) System and methods with reduced complexity in the integration of exposed information models with applications
US20130007377A1 (en) Message oriented middleware with integrated rules engine
CN115421787A (zh) 指令执行方法、装置、设备、系统、程序产品及介质
US10657073B2 (en) Driver module framework enabling creation and execution of reliable and performant drivers
CN112306718B (zh) 一种本地设备与异构设备之间的通信方法、系统及相关装置
US20180107680A1 (en) Methods for transferring reserves when moving virtual machines across systems
CN114443242A (zh) 一种信号处理软件组件化架构和软件开发方法
CN109933444A (zh) 一种寄宿应用间的即时通讯方法
CN112764729B (zh) 应用软件开发方法、装置、计算机设备及可读存储介质
JP7427775B2 (ja) ストアドプロシージャの実行方法、装置、データベースシステム及び記憶媒体
CN109254856A (zh) 智能pos服务端提供接口给客户端的方法
CN111562968B (zh) 一种实现ICS对Kata container管理的方法、装置、设备和介质
CN114327404A (zh) 一种文件处理方法、装置、电子设备及计算机可读介质
CN113760465A (zh) 一种事务执行方法、装置、服务器、设备和存储介质
CN117170738B (zh) Python与Fortran互调用的方法、系统、设备及存储介质
WO2023093885A1 (zh) 基于云技术的图形程序在线开发方法、系统及相关设备
CN114816796A (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