CN113032161A - 进程通讯方法及相关产品 - Google Patents

进程通讯方法及相关产品 Download PDF

Info

Publication number
CN113032161A
CN113032161A CN201911359050.8A CN201911359050A CN113032161A CN 113032161 A CN113032161 A CN 113032161A CN 201911359050 A CN201911359050 A CN 201911359050A CN 113032161 A CN113032161 A CN 113032161A
Authority
CN
China
Prior art keywords
component
controller
call
response message
registration
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.)
Granted
Application number
CN201911359050.8A
Other languages
English (en)
Other versions
CN113032161B (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.)
Bitmain Technologies Inc
Original Assignee
Bitmain Technologies Inc
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 Bitmain Technologies Inc filed Critical Bitmain Technologies Inc
Priority to CN201911359050.8A priority Critical patent/CN113032161B/zh
Priority claimed from CN201911359050.8A external-priority patent/CN113032161B/zh
Publication of CN113032161A publication Critical patent/CN113032161A/zh
Application granted granted Critical
Publication of CN113032161B publication Critical patent/CN113032161B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/54Interprogram communication
    • G06F9/546Message 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)
  • Computer And Data Communications (AREA)

Abstract

本申请提供一种进程通讯方法及相关产品,其中,该方法应用于第一控制器,第一控制器中运行有第一进程和第一组件;该方法包括:获取第一进程发起的第一调取命令,第一调取命令用于指示第一组件调用第一注册表函数;向第二控制器发送第一调用指令,第一调用指令用于指示调用第一注册表函数,第一调用指令用于指示与第二组件获取第一注册表函数所对应的第一返回值,第二控制器中运行有第二进程和第二组件;接收第二控制器发送的第一调用响应消息,第一调用响应消息用于指示第一返回值,以使第一进程获取第一返回值。不需要复杂的代码去实现进程之间的注册表函数的调用,减少代码的开发量,降低人工成本;降低了控制器中的代码量和代码运算量。

Description

进程通讯方法及相关产品
技术领域
本申请涉及人工智能技术领域,具体涉及一种进程通讯方法及相关产品。
背景技术
随着人工智能技术的发展,智能的运算设备开始得到广泛的应用,可以将智能的运算设备应用到各类技术领域中,例如应用到大数据处理领域、算力领域、图像处理领域。
现有技术中,在运算设备中会设置有控制器,控制器中运行有各个进程;控制器在进行智能运算的过程中,进程之间需要进行通讯。为了实现进程之间的通讯,开发人员可以构建代码,进而实现进程之间通讯;在进程之间需要调取注册表函数的时候,开发人员针对不同的进程需要提供不同的代码,进而进程之间实现注册表函数的调取。
然而现有技术中,在进程之间需要调取注册表函数的时候,由于需要针对不同的进程需要提供不同的代码,进而需要开发人员提供大量的代码;从而,加大了代码的开发量,加了了人工成本,并且使得控制器中的代码量和代码运算量较大。
发明内容
基于此,有必要针对上述技术问题,提供一种进程通讯方法及相关产品。
第一方面,本申请提供了一种进程通讯方法,所述方法应用于第一控制器,所述第一控制器中运行有第一进程和第一组件;所述方法,包括:获取第一进程发起的第一调取命令,其中,所述第一调取命令用于指示所述第一组件调用第一注册表函数,所述第一注册表函数为与第二进程相关的函数;向第二控制器发送第一调用指令,其中,所述第一调用指令用于指示调用第一注册表函数,且所述第一调用指令用于指示与所述第二进程相关的第二组件获取所述第一注册表函数所对应的第一返回值,所述第二控制器中运行有所述第二进程和所述第二组件;接收所述第二控制器发送的第一调用响应消息,其中,所述第一调用响应消息用于指示所述第一返回值,以使所述第一进程获取所述第一返回值。
第二方面,本申请提供了一种进程通讯方法,所述方法应用于第二控制器,所述第二控制器中运行有第二进程和第二组件;所述方法,包括:接收第一控制器发送的第一调用指令,其中,所述第一调用指令用于指示所述第二组件调用第一注册表函数,所述第一注册表函数为与所述第二进程相关的函数,所述第一控制器中运行有第一进程和第一组件,所述第一调用指令为所述第一控制器获取到所述第一进程发起的第一调取命令之后发出的;根据所述第一调用指令,获取所述第一注册表函数所对应的第一返回值,其中,所述第一返回值为所述第二进程所确定的;向所述第一控制器发送第一调用响应消息,其中,所述第一调用响应消息用于指示所述第一返回值,以使所述第一进程通过所述第一组件获取所述第一返回值。
第三方面,本申请提供了一种进程通讯方法,所述方法应用于控制器,所述控制器中运行有第一进程、第一组件、第二进程和第二组件;所述方法,包括:所述第一组件向所述第二组件发送第一调用指令,其中,所述第一调用指令用于指示所述第二组件调用第一注册表函数,所述第一注册表函数为与所述第二进程相关的函数,所述第一调用指令为所述第一组件获取到所述第一进程发起的第一调取命令之后发出的;所述第二组件向所述第二进程发送第二调取命令,其中,所述第二调取命令用于指示所述第二进程确定所述第一注册表函数所对应的第一返回值;所述第二组件向所述第一组件发送第一调用响应消息,其中,所述第一调用响应消息用于指示所述第一返回值,所述第一调用响应消息为所述第二组件接收到所述第二进程返回的所述第一返回值之后发出的;所述第一组件向所述第一进程反馈所述第一返回值。
第四方面,本申请提供了一种第一控制器,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行第一方面任一项所述的进程通讯方法。
第五方面,本申请提供了一种第二控制器,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行第二方面任一项所述的进程通讯方法。
第六方面,本申请提供了一种控制器,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行第三方面任一项所述的进程通讯方法。
第七方面,本申请提供了一种第一控制设备,所述第一控制设备包括一个或多个如第一方面任一所述的第一控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;当所述第一控制设备包含多个所述第一控制器时,所述多个所述第一控制器之间可以通过特定的结构进行连接并传输数据;其中,多个所述第一控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述第一控制器共享同一控制系统或拥有各自的控制系统;多个所述第一控制器共享内存单元或者拥有各自的内存单元。
第八方面,本申请提供了一种组合处理装置,包括如第七方面提供的第一控制设备,通用互联接口和其他处理装置;所述第一控制设备与所述其他处理装置进行交互,共同完成用户指定的操作。
第九方面,本申请提供了一种处理芯片,所述处理芯片包括如权利要求第七方面提供的第一控制设备或如第八方面提供的组合处理装置。
第十方面,本申请提供了一种板卡,所述板卡包括如第九方面所述的处理芯片。
第十一方面,本申请提供了一种电子装置,所述电子装置包括如第九方面所述的处理芯片或者如第十方面所述的板卡。
第十二方面,本申请提供了一种第二控制设备,所述第二控制设备包括一个或多个如第二方面提供所述的第二控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;当所述第二控制设备包含多个所述第二控制器时,所述多个所述第二控制器之间可以通过特定的结构进行连接并传输数据;其中,多个所述第二控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述第二控制器共享同一控制系统或拥有各自的控制系统;多个所述第二控制器共享内存单元或者拥有各自的内存单元。
第十三方面,本申请提供了一种组合处理装置,包括如第十二方面所述的第二控制设备,通用互联接口和其他处理装置;所述第二控制设备与所述其他处理装置进行交互,共同完成用户指定的操作。
第十四方面,本申请提供了一种处理芯片,所述处理芯片包括如第十二方面所述的第二控制设备或如第十三方面所述的组合处理装置。
第十五方面,本申请提供了一种板卡,所述板卡包括如第十四方面所述的处理芯片。
第十六方面,本申请提供了一种电子装置,所述电子装置包括如第十四方面所述的处理芯片或者如第十五方面所述的板卡。
第十七方面,本申请提供了一种控制设备,所述控制设备包括一个或多个如第一方面提供的第一控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;所述控制设备还包括一个或多个如第二方面提供的第二控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;所述第一控制器与所述第二控制器之间进行交互;当所述控制设备包含多个所述第一控制器和多个所述第二控制器时,所述多个所述第一控制器之间、多个所述第二控制器之间可以通过特定的结构进行连接并传输数据;其中,多个所述第一控制器和多个所述第二控制器,分别通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述第一控制器和多个所述第二控制器共享同一控制系统或拥有各自的控制系统;多个所述第一控制器和多个所述第二控制器共享内存单元或者拥有各自的内存单元。
第十八方面,本申请提供了一种组合处理装置,包括如第十七方面所述的控制设备,通用互联接口和其他处理装置;
所述控制设备与所述其他处理装置进行交互,共同完成用户指定的操作。
第十九方面,本申请提供了一种处理芯片,所述处理芯片包括如第十七方面所述的控制设备或如第十八方面所述的组合处理装置。
第二十方面,本申请提供了一种板卡,所述板卡包括如第十九方面所述的处理芯片。
第二十一方面,本申请提供了一种电子装置,所述电子装置包括如第十九方面所述的处理芯片或者如第二十方面所述的板卡。
第二十二方面,本申请提供了一种控制设备,所述控制设备包括一个或多个如第三方面的控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;当所述控制设备包含多个所述控制器时,所述多个所述控制器之间可以通过特定的结构进行连接并传输数据;其中,多个所述控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述控制器共享同一控制系统或拥有各自的控制系统;多个所述控制器共享内存单元或者拥有各自的内存单元。
第二十三方面,本申请提供了一种组合处理装置,包括如第二十二方面所述的控制设备,通用互联接口和其他处理装置;
所述控制设备与所述其他处理装置进行交互,共同完成用户指定的操作。
第二十四方面,本申请提供了一种处理芯片,所述处理芯片包括如第二十二方面所述的控制设备或如第二十三方面所述的组合处理装置。
第二十五方面,本申请提供了一种板卡,所述板卡包括如第二十四方面所述的处理芯片。
第二十六方面,本申请提供了一种电子装置,所述电子装置包括如第二十四方面所述的处理芯片或者如第二十五方面所述的板卡。
附图说明
图1为本申请实施例提供的应用场景示意图一;
图2为本申请实施例提供的应用场景示意图二;
图3为本申请实施例提供的应用场景示意图三;
图4为本申请实施例提供的一种进程通讯方法的流程示意图;
图5为本申请实施例提供的一种进程通讯方法的交互示意图;
图6为本申请实施例提供的另一种进程通讯方法的流程示意图;
图7为本申请实施例提供的另一种进程通讯方法的交互示意图一;
图8为本申请实施例提供的另一种进程通讯方法的交互示意图二;
图9为本申请实施例提供的又一种进程通讯方法的流程示意图;
图10为本申请实施例提供的又一种进程通讯方法的交互示意图;
图11为本申请实施例提供的再一种进程通讯方法的流程示意图;
图12为本申请实施例提供的再一种进程通讯方法的交互示意图;
图13为本申请实施例提供的其他一种进程通讯方法的流程示意图;
图14为本申请实施例提供的其他另一种进程通讯方法的流程示意图;
图15为本申请实施例提供的其他又一种进程通讯方法的流程示意图;
图16为本申请实施例提供的其他又一种进程通讯方法的交互示意图;
图17为本申请实施例提供的其他再一种进程通讯方法的流程示意图;
图18为本申请实施例提供的其他再一种进程通讯方法的交互示意图一;
图19为本申请实施例提供的其他再一种进程通讯方法的交互示意图二;
图20为本申请实施例提供的又有一种进程通讯方法的流程示意图;
图21为本申请实施例提供的又有一种进程通讯方法的交互示意图;
图22为本申请实施例提供的另有一种进程通讯方法的流程示意图;
图23为本申请实施例提供的另有一种进程通讯方法的交互示意图;
图24为本申请实施例提供的一种第一控制器的结构示意图;
图25为本申请实施例提供的一种第二控制器的结构示意图;
图26为本申请实施例提供的一种控制器的结构示意图;
图27为本申请实施例提供的另一种第一控制器的结构示意图;
图28为本申请实施例提供的另一种第二控制器的结构示意图;
图29为本申请实施例提供的另一种控制器的结构示意图;
图30为本申请实施例提供的一种第一控制设备的示意图;
图31为本申请实施例提供的一种组合处理装置的示意图;
图32为本申请实施例提供的一种处理芯片的示意图一;
图33为本申请实施例提供的一种处理芯片的示意图二;
图34为本申请实施例提供的一种处理芯片的示意图三;
图35为本申请实施例提供的一种板卡的示意图;
图36为本申请实施例提供的一种电子装置的示意图一;
图37为本申请实施例提供的一种电子装置的示意图二;
图38为本申请实施例提供的一种电子装置的示意图三;
图39为本申请实施例提供的一种第二控制设备的示意图;
图40为本申请实施例提供的另一种组合处理装置的示意图;
图41为本申请实施例提供的另一种处理芯片的示意图一;
图42为本申请实施例提供的另一种处理芯片的示意图二;
图43为本申请实施例提供的另一种处理芯片的示意图三;
图44为本申请实施例提供的另一种板卡的示意图;
图45为本申请实施例提供的另一种电子装置的示意图一;
图46为本申请实施例提供的另一种电子装置的示意图二;
图47为本申请实施例提供的另一种电子装置的示意图三;
图48为本申请实施例提供的一种控制设备的示意图;
图49为本申请实施例提供的又一种组合处理装置的示意图;
图50为本申请实施例提供的又一种处理芯片的示意图一;
图51为本申请实施例提供的又一种处理芯片的示意图二;
图52为本申请实施例提供的又一种处理芯片的示意图三;
图53为本申请实施例提供的又一种板卡的示意图;
图54为本申请实施例提供的又一种电子装置的示意图一;
图55为本申请实施例提供的又一种电子装置的示意图二;
图56为本申请实施例提供的又一种电子装置的示意图三;
图57为本申请实施例提供的另一种控制设备的示意图;
图58为本申请实施例提供的再一种组合处理装置的示意图;
图59为本申请实施例提供的再一种处理芯片的示意图一;
图60为本申请实施例提供的再一种处理芯片的示意图二;
图61为本申请实施例提供的再一种处理芯片的示意图三;
图62为本申请实施例提供的再一种板卡的示意图;
图63为本申请实施例提供的再一种电子装置的示意图一;
图64为本申请实施例提供的再一种电子装置的示意图二;
图65为本申请实施例提供的再一种电子装置的示意图三。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,本申请的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本申请的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本申请。如在本申请说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本申请说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
随着人工智能技术的发展,智能的运算设备开始得到广泛的应用,可以将智能的运算设备应用到各类技术领域中,例如应用到大数据处理领域、算力领域、图像处理领域。在运算设备中会设置有控制器,控制器中运行有各个进程,进而控制器通过各个进程完成上述技术处理过程。
图1为本申请实施例提供的应用场景示意图一,如图1所示,可以将控制器应用到人脸识别中,采用控制器直接对人脸图像进行识别,就可以得到识别结果,识别结果可以是图像或者其他数据。
图2为本申请实施例提供的应用场景示意图二,如图2所示,可以将控制器应用到服务器中,服务器采用控制器完成大数据的处理、或者完成算力运算。
图3为本申请实施例提供的应用场景示意图三,如图3所示,可以将控制器应用到计算机集群中,计算机集群中包括多个计算机,每一个计算机中配置有至少一个控制器;进而计算机集群中的各个计算机通过控制器,完成不同的计算机之间的数据交互和计算;并且,计算机集群中的每一个计算机通过各自的控制器,完成该计算机的内部的数据处理和数据运算。
现有技术中,控制器在进行智能运算的过程中,进程(Process)之间需要进行通讯。为了实现进程之间的通讯,开发人员可以构建代码,进而实现进程之间通讯;在进程之间需要调取注册表函数的时候,开发人员针对不同的进程需要提供不同的代码,进而进程之间实现注册表函数的调取。其中,注册表函数,为应用程序接口(ApplicationProgramming Interface,API);API,指的是一些预先定义的函数。
举例来说,控制器A中运行有进程a,控制器B中运行有进程b。控制器A的进程a与控制器B的进程b之间需要进行通讯,即,控制器A的进程a需要调取控制器B的进程b的注册表函数,或者,控制器B的进程b需要调取控制器A的进程a的注册表函数。在控制器A的进程a需要调取控制器B的进程b的注册表函数的时候,需要为此次调用配置相应的代码;在控制器B的进程b需要调取控制器A的进程a的注册表函数的时候,需要为此次调用配置相应的代码。以此类推,在控制器A与控制器B之间的进程需要进行注册表函数的调取,以进行通讯的时候,需要为每一次的调取配置相应的代码。
再举例来说,控制器C中运行有进程a、进程b、进程c。进程a与进程b之间需要进行通讯,即,进程a需要调取进程b的注册表函数,或者,进程b需要调取进程a的注册表函数。在进程a需要调取进程b的注册表函数的时候,需要为此次调用配置相应的代码;在进程b需要调取进程a的注册表函数的时候,需要为此次调用配置相应的代码。进程c与进程b之间需要进行通讯,即,进程c需要调取进程b的注册表函数,或者,进程b需要调取进程c的注册表函数。在进程c需要调取进程b的注册表函数的时候,需要为此次调用配置相应的代码;在进程b需要调取进程c的注册表函数的时候,需要为此次调用配置相应的代码。以此类推,对于控制器C中运行的各个进程,在进程之间需要进行注册表函数的调取,即,进行通讯的时候,需要为每次调取配置相应的代码。
可知,现有技术中,在进程之间需要调取注册表函数的时候,由于需要针对不同的进程需要提供不同的代码,进而需要开发人员提供大量的代码;从而,加大了代码的开发量,加了了人工成本,并且使得控制器中的代码量和代码运算量较大。
为了解决上述现有技术中存在的问题,本申请提供了进程通讯方法及相关产品,以实现减少代码开发量,降低人工成本,并且降低控制器中的代码量和代码运算量。
图4为本申请实施例提供的一种进程通讯方法的流程示意图,该方法应用于第一控制器,第一控制器中运行有第一进程和第一组件。如图4所示,该方法包括:
101、获取第一进程发起的第一调取命令,其中,第一调取命令用于指示第一组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数。
示例性地,本实施例的执行主体为第一控制器。第一控制器可以设置在一个智能设备中;第一控制器可以用于进行智能的数据预算。在第一控制器中运行有第一进程和第一组件,第一进程为智能设备的上层应用所发起的进程,第一组件为软件的组件。
第一控制器与第二控制器之间进行交互,第一控制器可以调用第二控制器的注册表函数,第二控制器也可以调用第一控制器的注册表函数。
第二控制器可以设置在一个智能设备中。一个示例中,第一控制器和第二控制器可以设置在同一个智能设备中,或者,第一控制器和第二控制器可以设置在不同的智能设备中。在第二制器中运行有第二进程和第二组件,第二进程为智能设备的上层应用所发起的进程,第二组件为软件的组件。
在智能设备的上层应用发起第一进程的时候,第一进程会向第一组件发出第一调取命令,第一调取命令用于指示调用第二进程的第一注册表函数;第一调取命令是一个远程调用指令。此时,第一注册表函数,也可以称为与第二进程相关的函数;第一注册表函数没有被第一进程调用之前,第一注册表函数只可以被第二进程调用;但是,在本实施例中,第一进程可以发起第一调取命令,进而通过第一控制器的第一组件、第二控制器的第二组件,去向第二进程调用第二进程的第一注册表函数。
一个示例中,可以为第一注册表函数配置一个唯一标识,该唯一标识可以称为端口号。
102、向第二控制器发送第一调用指令,其中,第一调用指令用于指示调用第一注册表函数,且第一调用指令用于指示与第二进程相关的第二组件获取第一注册表函数所对应的第一返回值,第二控制器中运行有第二进程和第二组件。
示例性地,第一组件接收到第一进程发起的第一调取命令之后,第一组件向第二控制器发送第一调用指令。该第一调用指令是实际的可以调用第一注册表函数的指令。在第二控制器中运行有第二组件和第二进程;第一控制器的第一进程与第二控制器的第二进程之间是不可以直接通讯的,第一控制器的第一组件与第二控制器的第二进程之间也是不可以直接通讯的。从而,第一组件是向第二控制器的第二组件发送第一调用指令。
在第一调用指令用于指示调用第二进程的第一注册表函数的时候,第一进程实际是需要获取与第一注册表函数对应的第一返回值,即,第一进程只需要得到第一返回值就可以实现调用第一注册表函数。
第二控制器的第二组件在接收到第一调用指令之后,需要获取与第二进程的第一注册表函数所对应的第一返回值。此时,第二控制器的第二组件向第二控制器的第二进程发送交互命令;即,该交互命令为第二组件与第二进程之间的交互命令;由于与第二进程的第一注册表函数所对应的第一返回值,是第二进程可以直接获取的,从而,需要第二组件向第二进程发送交互命令。
然后,第二进程向第二组件返回第一返回值;从而,第二控制器获取到第一注册表函数所对应的第一返回值。
103、接收第二控制器发送的第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程获取第一返回值。
示例性地,第二控制器的第二组件向第一控制器返回第一调取响应消息,第一调取响应消息用于指示出第一返回值,或者,第一调取响应消息中包括第一返回值。
由于第一控制器的第一组件与第二控制器的第二组件之间直接交互,从而,第一控制器的第一组件接收到第二控制器的第二组件返回的第一调取响应消息。
然后,第一控制器的第一组件,将第一返回值发送给第一控制器的第一进程。从而,第一控制器中所运行的第一进程,调取到第二控制器中所运行的第二进程的第一注册表函数。
步骤101-103为第一控制器的第一进程进行一次调取的过程,即,步骤101-103为第一控制器的第一进程调取一次第二进程的函数的过程;当第一控制器的第一进程再次需要调用第二进程的第一注册表函数的时候,还可以再次重复执行步骤101-103的过程,进而实现调用。
一个示例中,图5为本申请实施例提供的一种进程通讯方法的交互示意图,如图5所示,该方法应用于第一控制器与第二控制器之间的函数调用;第一控制器与第二控制器是不同的控制器;第一控制器中运行有第一进程和第一组件,第二控制器中运行有第二进程和第二组件。如图5所示,该方法包括了以下过程:
步骤11、第一进程向第一组件发送第一调取命令,第一调取命令用于指示调用第二进程的第一注册表函数。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第一调取命令为func_call。例如,Process A向cmd-trans-a(lib-a),发送func_call,func_call用于指示调用Process B的第一注册表函数。
步骤12、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数。
一个示例中,第一调用指令为request_send。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送request_send。
步骤13、第二组件向第二进程发送交互命令,其中,交互命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
一个示例中,交互命令为callback。例如,cmd-trans-b(lib-b)向Process B发送为callback。
步骤14、第二进程向第二组件返回第一返回值。
一个示例中,第二进程与第二组件之间用于传递第一返回值的指令为callback_return。例如,Process B向cmd-trans-b(lib-b)发送callback_return。
步骤15、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,或者,第一调用响应消息中包括第一返回值。
一个示例中,第一调用响应消息为response_send。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送response_send。
步骤16、第一组件向第一进程反馈第一返回值。
一个示例中,第一组件与第一进程之间用于传递第一返回值的指令为func_return。例如,cmd-trans-a(lib-a)向Process A发送func_return。
本实施例,通过提供应用到第一控制器的进程通讯方法,包括了获取第一进程发起的第一调取命令,第一调取命令用于指示第一组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数;向第二控制器发送第一调用指令,第一调用指令用于指示调用第一注册表函数,且第一调用指令用于指示与第二进程相关的第二组件获取第一注册表函数所对应的第一返回值,第二控制器中运行有第二进程和第二组件;接收第二控制器发送的第一调用响应消息,第一调用响应消息用于指示第一返回值,以使第一进程获取第一返回值。从而,在第一控制器中的第一进程,需要调用第二控制器中的第二进程的第一注册表函数的时候,通过为第一控制器配置的第一组件、为第二控制器配置的第二组件,去调用第一注册表函数;利用第一组件和第二组件,完成不同进程之间的交互。上述过程,是第一控制器的第一进程调取一次第二进程的函数的过程;当第一控制器的第一进程再次需要调用第二进程的第一注册表函数的时候,还可以再次重复上述过程,进而实现调用。不需要复杂的代码去实现进程之间的注册表函数的调用,减少了代码的开发量,降低了人工成本;并且,降低了控制器中的代码量和代码运算量。进一步地,在上层应用需要通过第一控制器的第一进程,调用第二控制器的第二进程的函数的整个过程中,不需要对开发人员可见,接口友好。
图6为本申请实施例提供的另一种进程通讯方法的流程示意图,该方法应用于第一控制器,第一控制器中运行有第一进程和第一组件。如图6所示,该方法包括:
201、接收第二控制器发送的第一注册请求消息,其中,第一注册请求消息为第二控制器的第二进程通过第二组件所发起的,第一注册请求消息用于指示对第一注册表函数进行注册处理。
示例性地,本实施例的执行主体为第一控制器。第一控制器可以设置在一个智能设备中;第一控制器可以用于进行智能的数据预算。在第一控制器中运行有第一进程和第一组件,第一进程为智能设备的上层应用所发起的进程,第一组件为软件的组件。
第一控制器与第二控制器之间进行交互,第一控制器可以调用第二控制器的注册表函数,第二控制器也可以调用第一控制器的注册表函数。
第二控制器可以设置在一个智能设备中。一个示例中,第一控制器和第二控制器可以设置在同一个智能设备中,或者,第一控制器和第二控制器可以设置在不同的智能设备中。在第二制器中运行有第二进程和第二组件,第二进程为智能设备的上层应用所发起的进程,第二组件为软件的组件。
在第一控制器的第一进程通过第一组件、第二组件,去调用第二控制器的第二进程的函数之前,第二控制器需要进行函数注册,使得第一控制器可以来调用第二控制器中的进程的函数。
首先,第二控制器的第二进程向第二组件发送第一注册请求消息,第一注册请求消息用于指示对第二进程的第一注册表函数进行注册处理。
然后,第二组件向第一控制器发送第一注册请求消息。由于第二组件与第一控制器的第一进程之间不行能直接交互,从而,第二组件会将第一注册请求消息发送给第一控制器的第一组件。
202、根据第一注册请求消息,对第一注册表函数进行注册处理。
示例性地,第一控制器的第一组件需要对第一注册请求消息所指示的第一注册表函数进行注册处理,进而使得第一控制器的第一进程可以向第二控制器,去调用第二进程的第一注册表函数。此时,第一控制器的第一组件可以直接根据第一注册请求消息,对第一注册表函数进行注册处理。
203、向第二控制器发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功,以使第二进程获取第一注册响应消息。
示例性地,在步骤202之后,第一控制器的第一组件对第一注册表函数完成了注册处理,然后,第一控制器需要告知第二控制器已经完成了对第一注册表函数的注册处理。第一控制器的第一组件可以向第二控制器的第二组件发送第一注册响应消息,该第一注册响应消息表征第一注册表函数注册成功。
然后,第二组件向第二进程反馈第一注册响应消息;第二进程就可以获知已经对第一注册表函数注册成功。
由于第二控制器与第一控制器之间,通过第二组件、第一组件进行交互;第二控制器可以向第一控制器注册第二进程的第一注册表函数,从而第一控制器确定第一控制器的第一进程可以向第二控制器去调用与第二进程相关的第一注册表函数。
从而,通过上述函数注册过程,对资源进行动态申请和动态分配,即,只有在初次需要调用函数的之后,才回去注册函数,不注册不会分配资源,进而减少系统资源的浪费。
在执行了步骤201-203之后,完成了第二进程的第一注册表函数的注册。就可以执行了后面的调用步骤了。在完成了对第一注册表函数的注册之后,第一控制器的第一进程可以多次的调用第二进程的第一注册表函数,每一次的调取用过程,可以参见步骤204-206。即,完成了步骤201-203之后,就对第二进程的第一注册表函数进行注册;当第一控制器的第一进程需要调用第二进程的第一注册表函数的时候,直接执行步骤204-206,当第一控制器的第一进程再次需要调用第二进程的第一注册表函数的时候,直接执行步骤204-206。从而,在第一控制器的第一进程需要再次调用第二控制器的第二进程的函数的时候,可以直接执行调用过程,完成一次调用,不需要再执行函数的注册过程;进而,使得调用资源可以重复利用。
一个示例中,图7为本申请实施例提供的另一种进程通讯方法的交互示意图一,如图7所示,该方法示出了第一注册表函数的注册过程;该方法包括:该方法包括了以下过程:
步骤21、第二进程向第二组件发送第一注册请求消息,第一注册请求消息用于指示对第一注册表函数进行注册处理。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第二进程与第二组件之间交互的第一注册请求消息为Regist_function。例如,Process B向cmd-trans-b(lib-b)发送Regist_function。
步骤22、第二组件向第一组件发送第一注册请求消息。
一个示例中,第二组件与第一组件之间交互的第一注册请求消息为Regist_request。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送Regist_request。
步骤23、第一组件对第一注册表函数进行注册处理。
步骤24、第一组件向第二组件发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功。
一个示例中,第一组件与第二组件之间交互的第一注册响应消息为Regist_response。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送Regist_response。
步骤25、第二组件向第二进程发送第一注册响应消息。
一个示例中,第二组件与第二进程之间交互的第一注册响应消息为Return。例如,cmd-trans-b(lib-b)向Process B发送Return。
204、获取第一进程发起的第一调取命令,其中,第一调取命令用于指示第一组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数。
示例性地,本步骤可以参见图4所示实施例的步骤101,不再赘述。
205、向第二控制器发送第一调用指令,其中,第一调用指令用于指示调用第一注册表函数,且第一调用指令用于指示与第二进程相关的第二组件获取第一注册表函数所对应的第一返回值,第二控制器中运行有第二进程和第二组件。
示例性地,本步骤可以参见图4所示实施例的步骤102,不再赘述。
206、接收第二控制器发送的第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程获取第一返回值。
示例性地,本步骤可以参见图4所示实施例的步骤103,不再赘述。并且,在执行了204-206之后,完成了对第一注册表函数的调用,不会执行其他指令了;同时,进程(线程)之间的调用是并发进行的,构成了池资源(包括内存池和线程池),进而不会造成内存碎片的积累,也不会耗费端口,以及不需要不断的切换进程。
并且,步骤201-203是第二控制器向第一控制器注册第一注册表函数,进而通过步骤204-206,第一控制器可以向第二控制器中去调用第一注册表函数。当第二控制器需要向第一控制器注册其他注册表函数的时候,注册过程也可以参见步骤201-203;然后,参见步骤204-206,第一控制器可以向第二控制器中去调取其他注册表函数。并且,不同的注册表函数具有各自的唯一标识。从而,各个注册表函数的注册过程之间互不干扰,可以同时进程;各个注册表函数的调用过程之间互不干扰,可以同时进行。
一个示例中,图8为本申请实施例提供的另一种进程通讯方法的交互示意图二,如图8所示,该方法示出了第一注册表函数的注册过程和调用过程;该方法包括:该方法包括了以下过程:
步骤31、第二进程向第二组件发送第一注册请求消息,第一注册请求消息用于指示对第一注册表函数进行注册处理。
步骤32、第二组件向第一组件发送第一注册请求消息。
步骤33、第一组件对第一注册表函数进行注册处理。
步骤34、第一组件向第二组件发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功。
步骤35、第二组件向第二进程发送第一注册响应消息。
在执行了步骤31-35之后,完成了第一注册表函数的注册。就可以执行步骤36-392。
步骤36、第一进程向第一组件发送第一调取命令,第一调取命令用于指示调用第二进程的第一注册表函数。
步骤37、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数。
步骤38、第二组件向第二进程发送交互命令,其中,交互命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
步骤39、第二进程向第二组件返回第一返回值。
步骤391、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,或者,第一调用响应消息中包括第一返回值。
步骤392、第一组件向第一进程反馈第一返回值。
在第一控制器的第一进程需要调用第二控制器的第二进程的函数的时候,通过步骤36-392的过程,利用第一组件、第二组件的交互指令,第一控制器可以完成第二进程的第一注册表函数的调用。在第一控制器的第一进程需要再次调用第二控制器的第二进程的函数的时候,可以直接执行步骤36-392的过程,完成一次调用,不需要再执行步骤31-35的注册过程。
本实施例,在上述实施例的基础上,第一控制器与第二控制器之间,利用第一控制器的第一组件、第二控制器的第二组件,完成对第二控制器的第二进程的第一注册表函数的注册;使得,第一控制器的第一进程可以调用第二控制器的第二进程的第一注册表函数。简化了代码方式的进程调用过程,降低了代码开发量。并且,在第一控制器的第一进程需要调用第二控制器的第二进程的函数的时候,利用第一组件、第二组件的交互指令,第一控制器可以完成第二进程的第一注册表函数的调用;在第一控制器的第一进程需要再次调用第二控制器的第二进程的函数的时候,可以直接执行调用过程,完成一次调用,不需要再执行函数的注册过程;进而,使得调用资源可以重复利用。并且,通过上述函数注册过程,对资源进行动态申请和动态分配,即,只有在初次需要调用函数的之后,才回去注册函数,不注册不会分配资源,进而减少系统资源的浪费。并且,在完成了一次调用之后,不会执行其他指令了,不会造成内存碎片的积累,也不会耗费端口;并且,不同的注册表函数的调用过程之间互不干扰,可以同时进行,实现了进程和接口的并发访问。
图9为本申请实施例提供的又一种进程通讯方法的流程示意图,该方法应用于第一控制器,第一控制器中运行有第一进程和第一组件。如图9所示,该方法包括:
301、获取第一进程发起的第一调取命令,其中,第一调取命令用于指示第一组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数。
示例性地,示例性地,本实施例的执行主体为第一控制器。第一控制器可以设置在一个智能设备中;第一控制器可以用于进行智能的数据预算。在第一控制器中运行有第一进程和第一组件,第一进程为智能设备的上层应用所发起的进程,第一组件为软件的组件。
第一控制器与第二控制器之间进行交互,第一控制器可以调用第二控制器的注册表函数,第二控制器也可以调用第一控制器的注册表函数。
第二控制器可以设置在一个智能设备中。一个示例中,第一控制器和第二控制器可以设置在同一个智能设备中,或者,第一控制器和第二控制器可以设置在不同的智能设备中。在第二制器中运行有第二进程和第二组件,第二进程为智能设备的上层应用所发起的进程,第二组件为软件的组件。
本步骤可以参见图4所示步骤101,不再赘述。
302、向第二控制器发送第一调用指令,其中,第一调用指令用于指示调用第一注册表函数,且第一调用指令用于指示与第二进程相关的第二组件获取第一注册表函数所对应的第一返回值,第二控制器中运行有第二进程和第二组件。
示例性地,本步骤可以参见图4所示步骤102,不再赘述。
303、接收第二控制器发送的第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程获取第一返回值。
示例性地,本步骤可以参见图4所示步骤103,不再赘述。
304、向第二控制器发送第二注册请求消息,其中,第二注册请求消息为第一进程所发起的,第二注册请求消息用于指示第二控制器的第二组件对第二注册表函数进行注册处理。
示例性地,在步骤301-303中,第一控制器的第一进程通过第一组件、第二组件,去调用第二控制器的第二进程的第一注册表函数。第二控制器的第二进程也可以去调用第一控制器的第一进程的第二注册表函数。
在第二控制器的第二进程通过第二组件、第一组件,去调用第一控制器的第一进程的函数之前,第一控制器需要进行函数注册,使得第二控制器可以来调用第一控制器中的进程的函数。
首先,第一控制器的第一进程向第一组件发送第二注册请求消息,第二注册请求消息用于指示对第一进程的第二册表函数进行注册处理。
然后,第一组件向第二控制器发送第二注册请求消息。由于第一组件与第二控制器的第二进程之间不行能直接交互,从而,第一组件会将第二注册请求消息发送给第二控制器的第二组件。
第二控制器的第二组件需要对第二注册请求消息所指示的第二注册表函数进行注册处理,进而使得第二控制器的第二进程可以向第一控制器,去调用第一进程的第二注册表函数。此时,第二控制器的第二组件可以直接根据第二注册请求消息,对第二注册表函数进行注册处理。
305、接收第二控制器发送的第二注册响应消息,其中,第二注册响应消息指示第二注册表函数注册成功,以使第一进程获取第二注册响应消息。
示例性地,在步骤304之后,第二控制器的第二组件对第二注册表函数完成了注册处理,然后,第二控制器需要告知第一控制器已经完成了对第二注册表函数的注册处理。第二控制器的第二组件可以向第一控制器的第一组件发送第二注册响应消息,该第二注册响应消息表征第二注册表函数注册成功。
然后,第一组件向第一进程反馈第二注册响应消息;第一进程就可以获知已经对第二注册表函数注册成功。
由于第一控制器与第二控制器之间,通过第一组件、第二组件进行交互;第一控制器可以向第二控制器注册第一进程的第二注册表函数,从而第二控制器确定第二控制器的第二进程可以向第一控制器去调用与第一进程相关的第二注册表函数。
从而,通过上述函数注册过程,对资源进行动态申请和动态分配,即,只有在初次需要调用函数的之后,才回去注册函数,不注册不会分配资源,进而减少系统资源的浪费。
在执行了步骤304-305之后,完成了第一进程的第二注册表函数的注册。就可以执行了后面的调用步骤了。在完成了对第二注册表函数的注册之后,第二控制器的第二进程可以多次的调用第一进程的第二注册表函数,每一次的调取用过程,可以参见步骤306-308。即,完成了步骤304-305之后,就对第一进程的第二注册表函数进行注册;当第二控制器的第二进程需要调用第一进程的第二注册表函数的时候,直接执行步骤306-308,当第二控制器的第二进程再次需要调用第一进程的第二注册表函数的时候,直接执行步骤306-308。从而,在第二控制器的第二进程需要再次调用第一控制器的第一进程的函数的时候,可以直接执行调用过程,完成一次调用,不需要再执行函数的注册过程;进而,使得调用资源可以重复利用。
306、接收第二控制器发送的第二调用指令,其中,第二调用指令用于指示调用第二注册表函数,第二注册表函数为与第一进程相关的函数,第二调用指令为第二控制器获取到第二进程发起的第二调取命令之后发出的。
示例性地,在智能设备的上层应用发起第二进程的时候,第二进程会向第二组件发出第二调取命令,第二调取命令用于指示调用第一进程的第二注册表函数;第二调取命令是一个远程调用指令。此时,第二注册表函数,也可以称为与第一进程相关的函数;第二注册表函数没有被第二进程调用之前,第二注册表函数只可以被第一进程调用;但是,在本实施例中,第二进程可以发起第二调取命令,进而通过第二控制器的第二组件、第一控制器的第一组件,去向第一进程调用第一进程的第二注册表函数。
第二组件接收到第二进程发起的第二调取命令之后,第二组件向第一控制器发送第二调用指令。该第二调用指令是实际的可以调用第二注册表函数的指令。在第一控制器中运行有第一件和第一进程;第二控制器的第二进程与第一控制器的第一进程之间是不可以直接通讯的,第二控制器的第二组件与第一控制器的第一进程之间也是不可以直接通讯的。从而,第二组件是向第一控制器的第一组件发送第二调用指令。第一控制器获取到第一调取指令。
307、根据第二调用指令,获取第二注册表函数所对应的第二返回值,其中,第二返回值为第一进程所确定的。
示例性地,在第二调用指令用于指示调用第一进程的第二注册表函数的时候,第二进程实际是需要获取与第二注册表函数对应的第二返回值,即,第二进程只需要得到第二返回值就可以实现调用第二注册表函数。
第一控制器的第一组件在接收到第二调用指令之后,需要获取与第一进程的第二注册表函数所对应的第二返回值。此时,第一控制器的第一组件向第一控制器的第一进程发送交互命令;即,交互命令为第一组件与第一进程之间的交互命令;由于与第一进程的第二注册表函数所对应的第二返回值,是第一进程可以直接获取的,从而,需要第一组件向第一进程发送交互命令。
然后,第一进程向第一组件返回第二返回值;从而,第一控制器获取到第二注册表函数所对应的第二返回值。
308、向第二控制器发送第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,以使第二进程获取第二返回值。
示例性地,第一控制器的第一组件向第二控制器返回第二调取响应消息,第二调取响应消息用于指示出第二返回值,或者,第二调取响应消息中包括第二返回值。
由于第二控制器的第二组件与第一控制器的第一组件之间直接交互,从而,第二控制器的第二组件接收到第一控制器的第一组件返回的第二调取响应消息。
然后,第二控制器的第二组件,将第二返回值发送给第二控制器的第二进程。从而,第二控制器中所运行的第二进程,调取到第一控制器中所运行的第一进程的第二注册表函数。
步骤306-308为第二控制器的第二进程进行一次调取的过程,即,步骤306-308为第二控制器的第二进程调取一次第一进程的函数的过程;当第二控制器的第二进程再次需要调用第一进程的第二注册表函数的时候,还可以再次重复执行步骤306-308的过程,进而实现调用。
步骤301-303是第一控制器的第一进程调用第二控制器的第二进程的函数,步骤306-308是第二控制器的第二进程调用第一控制器的第一进程的函数;这两个过程是相互独立执行的,互不干扰,进而不同的控制器之间可以并发的执行相互的调用过程。
一个示例中,图10为本申请实施例提供的又一种进程通讯方法的交互示意图,如图10所示,该方法应用于第一控制器与第二控制器之间的函数注册和函数调用;第一控制器与第二控制器是不同的控制器;第一控制器中运行有第一进程和第一组件,第二控制器中运行有第二进程和第二组件。如图5所示,该方法包括了以下过程:
步骤41、第一进程向第一组件发送第二注册请求消息,第二注册请求消息用于指示对第二注册表函数进行注册处理。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第一进程与第一组件之间交互的第二注册请求消息为Regist_function。例如,Process A向cmd-trans-a(lib-a)发送Regist_function。
步骤42、第一组件向第二组件发送第二注册请求消息。
一个示例中,第一组件与第二组件之间交互的第二注册请求消息为Regist_request。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送Regist_request。
步骤43、第二组件对第二注册表函数进行注册处理。
步骤44、第二组件向第一组件发送第二注册响应消息,其中,第二注册响应消息用于指示第二注册表函数注册成功。
一个示例中,第二组件与向第一组件之间交互的第二注册响应消息为Regist_response。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送Regist_response。
步骤45、第一组件向第一进程发送第二注册响应消息。
一个示例中,第一组件与第一进程之间交互的第二注册响应消息为Return。例如,cmd-cmd-trans-a(lib-a)向Process A发送Return。
在执行了步骤41-45之后,完成了第二注册表函数的注册。就可以执行步骤46-492。
步骤46、第二进程向第二组件发送第二调取命令,第二调取命令用于指示调用第一进程的第二注册表函数。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第二调取命令为notify。例如,Process B向cmd-trans-b(lib-b),发送notify,notify用于指示调用Process A的第二注册表函数。
步骤47、第二组件向第一组件发送第二调用指令,其中,第二调用指令用于指示第一组件调用第二注册表函数。
一个示例中,第二调用指令为request_send。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送request_send。
步骤48、第一组件向第一进程发送交互命令,其中,该交互命令用于指示第一进程确定第二注册表函数所对应的第二返回值。
一个示例中,交互命令为callback。例如,cmd-trans-a(lib-a)向Process A发送为callback。
步骤49、第一进程向第一组件返回第二返回值。
一个示例中,第一进程与第一组件之间用于传递第二返回值的指令为callback_return。例如,Process A向cmd-trans-a(lib-a)发送callback_return。
步骤491、第一组件向第二组件发送第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,或者,第二调用响应消息中包括第二返回值。
一个示例中,第二调用响应消息为response_send。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送response_send。
步骤492、第二组件向第二进程反馈第二返回值。
一个示例中,第二组件与第二进程之间用于传递第二返回值的指令为notify_return。例如,cmd-trans-b(lib-b)向Process B发送notify_return。
在第二控制器的第二进程需要调用第一控制器的第一进程的函数的时候,通过步骤46-492的过程,利用第二组件、第一组件的交互指令,第二控制器可以完成第一进程的第二注册表函数的调用。在第二控制器的第二进程需要再次调用第一控制器的第一进程的函数的时候,可以直接执行步骤46-492的过程,完成一次调用,不需要再执行步骤41-45的注册过程。
本实施例,在上述实施例的基础上,还可以实现第二控制器的第二进程需要调用第一控制器的第一进程的函数,该调用过程依然具备第一控制器的调用过程的优点。并且,第一控制器的第一进程调用第二控制器的第二进程的函数、第二控制器的第二进程调用第一控制器的第一进程的函数,这两个过程是相互独立执行的,互不干扰,进而不同的控制器之间可以并发的执行相互的调用过程;进一步的实现了不同的接口之间的高并发访问。
图11为本申请实施例提供的再一种进程通讯方法的流程示意图,该方法应用于第一控制器,第一控制器中运行有第一进程和第一组件。如图11所示,该方法包括:
401、获取第一进程发起的第一初始化命令,并且接收第二控制器发送的交互信息,其中,交互信息表征第二控制器的第二组件获取到第二进程发起的第二初始化命令。
示例性地,本实施例的执行主体为第一控制器。第一控制器可以设置在一个智能设备中;第一控制器可以用于进行智能的数据预算。在第一控制器中运行有第一进程和第一组件,第一进程为智能设备的上层应用所发起的进程,第一组件为软件的组件。
第一控制器与第二控制器之间进行交互,第一控制器可以调用第二控制器的注册表函数,第二控制器也可以调用第一控制器的注册表函数。
第二控制器可以设置在一个智能设备中。一个示例中,第一控制器和第二控制器可以设置在同一个智能设备中,或者,第一控制器和第二控制器可以设置在不同的智能设备中。在第二制器中运行有第二进程和第二组件,第二进程为智能设备的上层应用所发起的进程,第二组件为软件的组件。
在第一控制器的第一进程与第二控制器的第二进程进行交互之前,需要将第一进程与第二进程之间建立交互关系。
首先,第一控制器的第一进程向第一组件发送第一初始化命令,第一初始化命令用于表征第一进程指示进行进程信息的初始化匹配;并且,第二控制器的第二进程向第二组件发送第二初始化命令,第二初始化命令用于表征第二进程指示进行进程信息的初始化匹配。第一初始化命令的发出时间、第二初始化命令的发出时间,两者之间不收到相互之间的影响,发出时间不做限制。在第二组件接收到第二进程发送的第二初始化命令之后,第二控制器的第二组件向第一控制器的第一组件发送交互信息。
一个示例中,第二进程向第二组件发送第二初始化命令;第二组件向第一组件发送交互信息;第一组件等待第一进程发出第一初始化命令。
402、向第二控制器发送第一能力信息,其中,第一能力信息为第一进程的能力信息,第一能力信息用于第二控制器对第一能力信息与第二能力信息进行匹配,第二能力信息为第二进程的能力信息。
示例性地,第一控制器的第一组件向第二控制器的第二组件,发送第一进程的能力信息;将第一进程的能力信息,称为第一能力信息。
第二组件接收到第一进程的能力信息之后,对第一进程的能力信息和第二进程的能力信息进行匹配;将第二进程的能力信息,称为第二能力信息。第二组件根据第一能力信息和第二能力信息,对第一进程和第二进程进行能力匹配。
一个示例中,第一能力信息表征了第一进程的需求,例如,第一进程需要的能力、接口。第二能力信息表征了第二进程的需求,例如,第二进程需要的能力、接口。
403、接收第二控制器发送的初始化响应消息,其中,初始化响应消息表征第二控制器的第二组件对第一能力信息与第二能力信息的匹配成功。
示例性地,第二控制器的第二组件在将述第一能力信息与第二能力信息的匹配成功之后,确定初始化完成,即,第一进程和第二进程之间可以进行交互了。
第二控制器的第二组件向第一控制器的第一组件发送初始化响应消息,初始化响应消息用于指示初始化完成。
404、接收第二控制器发送的心跳指令。
示例性地,第二控制器的第二组件,可以向第一控制器的第一组件发送的心跳指令。
405、向第二控制器发送心跳响应消息。
示例性地,第一控制器的第一组件向第二控制器的第二组件发送心跳响应消息。
步骤404-405在步骤403之后就可以进行执行,在第一组件与第二组件之间进行函数注册和函数调用的过程中,步骤404-405可以持续进行,以保证第一组件和第二组件之间保持持续的连接。可知,步骤404-405在初始化完成之后,且在反初始化完成之前,会持续进行。
一个示例中,在步骤404之后,第一控制器的第一组件若确定第一组件出现异常问题,则第一组件可以向第一进程反馈异常消息;第二控制器的第二组件在确定预设时间之后,还没有收到心跳响应消息,则第二组件向第二进程反馈异常消息。
一个示例中,还可以包括以下过程:第一控制器的第一组件,可以向第二控制器的第二组件发送的心跳指令;第二控制器的第二组件向第一控制器的第一组件发送心跳响应消息。
406、获取第一进程发起的第一调取命令,其中,第一调取命令用于指示第一组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数。
示例性地,本步骤可以参见图4所示的步骤101,不再赘述。
407、向第二控制器发送第一调用指令,其中,第一调用指令用于指示调用第一注册表函数,且第一调用指令用于指示与第二进程相关的第二组件获取第一注册表函数所对应的第一返回值,第二控制器中运行有第二进程和第二组件。
示例性地,本步骤可以参见图4所示的步骤102,不再赘述。
408、接收第二控制器发送的第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程获取第一返回值。
示例性地,本步骤可以参见图4所示的步骤103,不再赘述。
409、获取第一进程发起的反初始化命令。
示例性地,第一控制器的第一进程可以发起反初始化;第一控制器的第一进程向第一控制器的第一组件发送反初始化命令。
410、向第二控制器发送结束指令,其中,结束指令用于指示第二控制器的第二组件结束第一进程与第二进程之间的调用关系。
示例性地,第一控制器的第一组件向第二控制器的第二组件发送结束指令,该结束指令用于指示结束第一进程和第二进程之间的调用关系。第二控制器的第二组件根据结束指令,结束第一进程与第二进程之间的调用关系。一个示例中,第二组件向第二进程发送关闭指令,其中,关闭指令用于指示结束第二进程的运行;进而,第二组件结束第一进程与第二进程之间的调用关系。
411、接收第二控制器发送的反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程与第二进程之间的调用关系,以使第一进程获取反初始化响应消息。
示例性地,第二控制器的第二组件在确定结束了第一进程与第二进程之间的调用关系之后,向第一控制器的第一组件发送反初始化响应消息。
第一控制器的第一组件在接收到第二组件发送的反初始化响应消息之后,向第一进程发送反初始化响应消息,进而第一进程可以获知第一进程与第二进程之间的调用关系结束。
一个示例中,图12为本申请实施例提供的再一种进程通讯方法的交互示意图,如图12所示,第一控制器与第二控制器是不同的控制器;第一控制器中运行有第一进程和第一组件,第二控制器中运行有第二进程和第二组件。如图12所示,该方法包括了以下过程:
步骤51、第一进程向第一组件发送第一初始化命令,其中,第一初始化命令用于表征第一进程指示进行进程信息的初始化匹配。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第一初始化命令为cmd_trans_init。例如,Process A向cmd-trans-a(lib-a)发送cmd_trans_init。
步骤52、第二进程向第二组件发送第二初始化命令,其中,第二初始化命令用于表征第二进程指示进行进程信息的初始化匹配。
一个示例中,第二初始化命令为cmd_trans_start。例如,Process B向cmd-trans-b(lib-b)发送cmd_trans_start。
步骤53、第二组件向第一组件接收发送交互信息。
一个示例中,交互信息为Hello123。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送Hello123。
步骤54、第一组件向第二组件发送第一能力信息,其中,第一能力信息为第一进程的能力信息。
一个示例中,第一能力信息为Init_tables。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送Init_tables。
步骤55、第二组件根据第一能力信息和预设的第二能力信息进行进程能力匹配,其中,第二能力信息为第二进程的能力信息。
步骤56、第二组件向第一组件发送初始化响应消息,其中,初始化响应消息用于指示初始化完成。
一个示例中,初始化响应消息为Ack_init_tables。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送Ack_init_tables。
一个示例中,第一组件还可以向第一进程发送初始化响应消息。
在完成了步骤56之后,就可以开始执行心跳检测了,即进行步骤57-58。
步骤57、第二组件向第一组件发送心跳指令。
一个示例中,心跳指令为heart-beats。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送heart-beats。
步骤58、第一组件向第二组件发送心跳响应消息。
一个示例中,心跳响应消息为ack-heart-beats。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送ack-heart-beats。
一个示例中,还可以包括:cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送heart-beats;cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送ack-heart-beats。
步骤59、第一进程向第一组件发送第一调取命令,第一调取命令用于指示调用第二进程的第一注册表函数。
步骤60、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数。
步骤62、第二组件向第二进程发送交互命令,其中,交互命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
步骤63、第二进程向第二组件返回第一返回值。
步骤64、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,或者,第一调用响应消息中包括第一返回值。
步骤65、第一组件向第一进程反馈第一返回值。
一个示例中,步骤60-65可以参见图5的各步骤,不再赘述。
一个示例中,还可以执行图7的各步骤,不再赘述。一个示例中,还可以执行图8的各步骤,不再赘述。一个示例中,还可以执行图10的各步骤,不再赘述。
步骤66、第一进程向第一组件发送反初始化指令。
一个示例中,反初始化指令为cmd_trans_deinit。例如,Process A向cmd-trans-a(lib-a)发送cmd_trans_deinit。
步骤67、第一组件向第二组件发送结束指令,其中,结束指令用于指示结束第一进程和第二进程之间的调用关系。
一个示例中,结束指令为bye。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送bye。
步骤68、第二组件向第一组件发送反初始化响应消息。
一个示例中,第二组件根据结束指令结束第一进程和第二进程之间的调用关系。第二组件向第一组件发送反初始化响应消息,反初始化响应消息表征了第一进程和第二进程之间的调用关系已经结束。
第二组件与第一组件之间交互的反初始化响应消息为ack_bye。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送ack_bye。
步骤69、第一组件向第一进程发送反初始化响应消息。
一个示例中,第一组件与第一进程之间交互的反初始化响应消息为deinit_return。例如,cmd-trans-a(lib-a)向第一进程Process发送deinit_return。
步骤691、第二组件向第二进程发送关闭指令,其中,关闭指令用于指示结束第二进程的运行。
一个示例中,关闭指令为call_shut_down。例如,cmd-trans-b(lib-b)向ProcessB发送call_shut_down。
本实施例,在上述实施例的基础上,通过第一控制器的第一组件与第二控制器的第二组件的交互信息,利用第一组件和第二组件完成初始化,进而第一控制器的第一进程与第二控制器的第二进程之间建立关系,第一控制器的第一进程与第二控制器的第二进程之间,就可以通过第一组件和第二组件,完成函数的注册和调用;以实现不同进程之间的接口调用。并且,在不需要第一控制器的第一进程与第二控制器的第二进程之间再进行接口调用的时候,利用第一组件和第二组件,完成反初始化过程;从而,结束第一控制器的第一进程与第二控制器的第二进程之间的调用关系;不需要再进行心跳检测了,节约组件之间的信令交互,节约信令开销。
图13为本申请实施例提供的其他一种进程通讯方法的流程示意图,该方法应用于第二控制器,第二控制器中运行有第二进程和第二组件。如图13所示,该方法包括:
501、接收第一控制器发送的第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一控制器中运行有第一进程和第一组件,第一调用指令为第一控制器获取到第一进程发起的第一调取命令之后发出的。
502、根据第一调用指令,获取第一注册表函数所对应的第一返回值,其中,第一返回值为第二进程所确定的。
503、向第一控制器发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程通过第一组件获取第一返回值。
示例性地,本实施例的执行主体为第二控制器。第二控制器可以设置在一个智能设备中。第二控制器可以用于进行智能的数据预算。在第二控制器中运行有第二进程和第二组件,第二进程为智能设备的上层应用所发起的进程,第二组件为软件的组件。
第一控制器与第二控制器之间进行交互,第一控制器可以调用第二控制器的注册表函数,第二控制器也可以调用第一控制器的注册表函数。
第一控制器可以设置在一个智能设备中;一个示例中,第一控制器和第二控制器可以设置在同一个智能设备中,或者,第一控制器和第二控制器可以设置在不同的智能设备中。在第一制器中运行有第一进程和第一组件,第一进程为智能设备的上层应用所发起的进程,第一组件为软件的组件。
本实施例的各步骤可以参见图4-图12所示实施例的各步骤,技术过程和技术效果相同,不再赘述。
图14为本申请实施例提供的其他另一种进程通讯方法的流程示意图,该方法应用于第二控制器,第二控制器中运行有第二进程和第二组件。如图13所示,该方法包括:
601、向第一控制器发送第一注册请求消息,其中,第一注册请求消息为第二进程所发起的,第一注册请求消息用于指示第一控制器的第一组件对第一注册表函数进行注册处理。
602、接收第一控制器发送的第一注册响应消息,其中,第一注册响应消息指示第一注册表函数注册成功,以使第二进程获取第一注册响应消息。
603、接收第一控制器发送的第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一控制器中运行有第一进程和第一组件,第一调用指令为第一控制器获取到第一进程发起的第一调取命令之后发出的。
604、根据第一调用指令,获取第一注册表函数所对应的第一返回值,其中,第一返回值为第二进程所确定的。
605、向第一控制器发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程通过第一组件获取第一返回值。
一个示例中,本实施例提供的方法,还可以包括以下步骤:
第一步骤、接收第一控制器发送的第二注册请求消息,其中,第二注册请求消息为第一控制器的第一进程通过第一组件所发起的,第二注册请求消息用于指示对第二注册表函数进行注册处理。
第二步骤、根据第二注册请求消息,对第二注册表函数进行注册处理。
第三步骤、向第一控制器发送第二注册响应消息,其中,第二注册响应消息指示第二注册表函数注册成功,以使第一进程获取第二注册响应消息。
第四步骤、获取第二进程发起的第二调取命令,其中,第二调取命令用于指示第二组件调用第二注册表函数,第二注册表函数为与第一进程相关的函数。
第五步骤、向第一控制器发送第二调用指令,其中,第二调用指令用于指示调用第二注册表函数,且第二调用指令用于指示与第一进程相关的第一组件获取第二注册表函数所对应的第二返回值。
第六步骤、接收第一控制器发送的第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,以使第二进程获取第二返回值。
一个示例中,本实施例提供的方法,在步骤601之前,还可以包括以下步骤:
第七步骤、获取第二进程发起的第二初始化命令,并向第一控制器发送交互信息。
第八步骤、接收第一控制器发送的第一能力信息,其中,第一能力信息为第一进程的能力信息,第一能力信息为第一控制器在获取到第一进程发起的第一初始化命令之后发出的。
第九步骤、对第一能力信息与第二能力信息进行匹配,其中,第二能力信息为第二进程的能力信息。
第十步骤、在对第一能力信息与第二能力信息匹配成功之后,向第一控制器发送初始化响应消息,其中,初始化响应消息表征第二控制器的第二组件对第一能力信息与第二能力信息的匹配成功。
一个示例中,本实施例提供的方法,还可以包括以下步骤:
第十一步骤、接收第一控制器发送的结束指令,其中,结束指令用于指示第二组件结束第一进程与第二进程之间的调用关系,结束指令为第一控制器的第一组件获取到反初始化命令之后所发出的,反初始化命令为第一进程所发起的。
第十二步骤、生成反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程与第二进程之间的调用关系,以使第二进程获取反初始化响应消息。
第十三步骤、向第一控制器发送反初始化响应消息,以使第一进程获取反初始化响应消息。
一个示例中,本实施例提供的方法,还可以包括以下步骤:
第十四步骤、向第一控制器发送心跳指令。
第十五步骤、接收第一控制器发送的心跳响应消息。
示例性地,本实施例的执行主体为第二控制器。第二控制器可以设置在一个智能设备中。第二控制器可以用于进行智能的数据预算。在第二控制器中运行有第二进程和第二组件,第二进程为智能设备的上层应用所发起的进程,第二组件为软件的组件。
第一控制器与第二控制器之间进行交互,第一控制器可以调用第二控制器的注册表函数,第二控制器也可以调用第一控制器的注册表函数。
第一控制器可以设置在一个智能设备中;一个示例中,第一控制器和第二控制器可以设置在同一个智能设备中,或者,第一控制器和第二控制器可以设置在不同的智能设备中。在第一制器中运行有第一进程和第一组件,第一进程为智能设备的上层应用所发起的进程,第一组件为软件的组件。
本实施例的各步骤可以参见图4-图12所示实施例的各步骤,技术过程和技术效果相同,不再赘述。
图15为本申请实施例提供的其他又一种进程通讯方法的流程示意图,该方法应用于控制器,控制器中运行有第一进程、第一组件、第二进程和第二组件。如图15所示,该方法包括:
701、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一调用指令为第一组件获取到第一进程发起的第一调取命令之后发出的。
示例性地,本实施例的执行主体为控制器。控制器可以设置在一个智能设备中;控制器可以用于进行智能的数据预算。在控制器中运行有第一进程、第一组件、第二进程和第二组件,第一进程和第二进程为智能设备的上层应用所发起的进程,第一组件和第二组件为软件的组件。
控制器中的进程之间进行交互,控制器的第一进程可以调用控制器的第二进程的注册表函数,控制器的第二进程也可以调用控制器的第一进程的注册表函数。
在智能设备的上层应用发起第一进程的时候,第一进程会向第一组件发出第一调取命令,第一调取命令用于指示调用第二进程的第一注册表函数;第一调取命令是一个远程调用指令。此时,第一注册表函数,也可以称为与第二进程相关的函数;第一注册表函数没有被第一进程调用之前,第一注册表函数只可以被第二进程调用;但是,在本实施例中,第一进程可以发起第一调取命令,进而通过控制器的第一组件、控制器的第二组件,去向第二进程调用第二进程的第一注册表函数。
一个示例中,可以为第一注册表函数配置一个唯一标识,该唯一标识可以称为端口号。
第一组件接收到第一进程发起的第一调取命令之后,第一组件向第二组件发送第一调用指令。该第一调用指令是实际的可以调用第一注册表函数的指令。控制器的第一进程与控制器的第二进程之间是不可以直接通讯的,从而,第一组件是向第二组件发送第一调用指令。
702、第二组件向第二进程发送第二调取命令,其中,第二调取命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
示例性地,在第一调用指令用于指示调用第二进程的第一注册表函数的时候,第一进程实际是需要获取与第一注册表函数对应的第一返回值,即,第一进程只需要得到第一返回值就可以实现调用第一注册表函数。
控制器的第二组件在接收到第一调用指令之后,需要获取与第二进程的第一注册表函数所对应的第一返回值。此时,控制器的第二组件向控制器的第二进程发送交互命令;即,该交互命令为第二组件与第二进程之间的交互命令;由于与第二进程的第一注册表函数所对应的第一返回值,是第二进程可以直接获取的,从而,需要第二组件向第二进程发送交互命令。
然后,第二进程向第二组件返回第一返回值;从而,第二组件获取到第一注册表函数所对应的第一返回值。
703、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,第一调用响应消息为第二组件接收到第二进程返回的第一返回值之后发出的。
示例性地,由于控制器的第一组件与控制器的第二组件之间直接交互,控制器的第二组件可以向第一组件返回第一调取响应消息,第一调取响应消息用于指示出第一返回值,或者,第一调取响应消息中包括第一返回值。
704、第一组件向第一进程反馈第一返回值。
示例性地,控制器的第一组件,将第一返回值发送给控制器的第一进程。从而,控制器中所运行的第一进程,调取到控制器中所运行的第二进程的第一注册表函数。
步骤701-704为控制器的第一进程进行一次调取的过程,即,步骤701-704为控制器的第一进程调取一次第二进程的函数的过程;当控制器的第一进程再次需要调用第二进程的第一注册表函数的时候,还可以再次重复执行步骤701-704的过程,进而实现调用。
一个示例中,图16为本申请实施例提供的其他又一种进程通讯方法的交互示意图,如图16所示,该方法应用于控制器内部的不同进程之间的函数调用;控制器中运行有第一进程、第一组件、第二进程和第二组件。如图16所示,该方法包括了以下过程:
步骤71、第一进程向第一组件发送第一调取命令,第一调取命令用于指示调用第二进程的第一注册表函数。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第一调取命令为func_call。例如,Process A向cmd-trans-a(lib-a),发送func_call,func_call用于指示调用Process B的第一注册表函数。
步骤72、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数。
一个示例中,第一调用指令为request_send。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送request_send。
步骤73、第二组件向第二进程发送交互命令,其中,交互命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
一个示例中,交互命令为callback。例如,cmd-trans-b(lib-b)向Process B发送为callback。
步骤74、第二进程向第二组件返回第一返回值。
一个示例中,第二进程与第二组件之间用于传递第一返回值的指令为callback_return。例如,Process B向cmd-trans-b(lib-b)发送callback_return。
步骤75、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,或者,第一调用响应消息中包括第一返回值。
一个示例中,第一调用响应消息为response_send。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送response_send。
步骤76、第一组件向第一进程反馈第一返回值。
一个示例中,第一组件与第一进程之间用于传递第一返回值的指令为func_return。例如,cmd-trans-a(lib-a)向Process A发送func_return。
本实施例,通过提供应用到控制器的进程通讯方法,控制器中运行有第一进程、第一组件、第二进程和第二组件,第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一调用指令为第一组件获取到第一进程发起的第一调取命令之后发出的;第二组件向第二进程发送第二调取命令,其中,第二调取命令用于指示第二进程确定第一注册表函数所对应的第一返回值;第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,第一调用响应消息为第二组件接收到第二进程返回的第一返回值之后发出的;第一组件向第一进程反馈第一返回值。从而,在控制器中的第一进程,需要调用控制器中的第二进程的第一注册表函数的时候,通过为控制器配置的第一组件、为控制器配置的第二组件,去调用第一注册表函数;利用第一组件和第二组件,完成不同进程之间的交互。上述过程,是控制器的第一进程调取一次第二进程的函数的过程;当控制器的第一进程再次需要调用第二进程的第一注册表函数的时候,还可以再次重复上述过程,进而实现调用。不需要复杂的代码去实现进程之间的注册表函数的调用,减少了代码的开发量,降低了人工成本;并且,降低了控制器中的代码量和代码运算量。进一步地,在上层应用需要通过控制器的第一进程,调用控制器的第二进程的函数的整个过程中,不需要对开发人员可见,接口友好。
图17为本申请实施例提供的其他再一种进程通讯方法的流程示意图,该方法应用于控制器,控制器中运行有第一进程、第一组件、第二进程和第二组件。如图17所示,该方法包括:
801、第二组件向第一组件发送第一注册请求,其中,第一注册请求为第二进程所发起的,第一注册请求消息用于指示对第一注册表函数进行注册处理。
示例性地,本实施例的执行主体为控制器。控制器可以设置在一个智能设备中;控制器可以用于进行智能的数据预算。在控制器中运行有第一进程、第一组件、第二进程和第二组件,第一进程和第二进程为智能设备的上层应用所发起的进程,第一组件和第二组件为软件的组件。
在控制器的第一进程通过第一组件、第二组件,去调用控制器的第二进程的函数之前,控制器需要进行函数注册,使得第一进程可以来调用第二进程的函数。
首先,控制器的第二进程向第二组件发送第一注册请求消息,第一注册请求消息用于指示对第二进程的第一注册表函数进行注册处理。
然后,第二组件向第一组件发送第一注册请求消息。
802、第一组件根据第一注册请求,对第一注册表函数进行注册处理。
示例性地,第一组件需要对第一注册请求消息所指示的第一注册表函数进行注册处理,进而使得第一进程可以向第二控制器,去调用第二进程的第一注册表函数。此时,第一组件可以直接根据第一注册请求消息,对第一注册表函数进行注册处理。
803、第一组件向第二组件发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功。
示例性地,在步骤802之后,第一组件对第一注册表函数完成了注册处理,然后,第一组件需要告知第二组件已经完成了对第一注册表函数的注册处理。第一组件可以向第二组件发送第一注册响应消息,该第一注册响应消息表征第一注册表函数注册成功。
804、第二组件向第二进程发送第一注册响应消息。
示例性地,第二组件向第二进程反馈第一注册响应消息;第二进程就可以获知已经对第一注册表函数注册成功。
由于第一进程与第二进程之间,通过第一组件、第二组件进行交互;第二进程可以向第一组件注册第二进程的第一注册表函数,从而控制器确定第一进程可以向第二进程去调用与第二进程相关的第一注册表函数。
从而,通过上述函数注册过程,对资源进行动态申请和动态分配,即,只有在初次需要调用函数的之后,才回去注册函数,不注册不会分配资源,进而减少系统资源的浪费。
在执行了步骤801-804之后,完成了第二进程的第一注册表函数的注册。就可以执行了后面的调用步骤了。在完成了对第一注册表函数的注册之后,控制器的第一进程可以多次的调用第二进程的第一注册表函数,每一次的调取用过程,可以参见步骤805-808。即,完成了步骤801-804之后,就对第二进程的第一注册表函数进行注册;当控制器的第一进程需要调用第二进程的第一注册表函数的时候,直接执行步骤805-808,当控制器的第一进程再次需要调用第二进程的第一注册表函数的时候,直接执行步骤805-808。从而,在控制器的第一进程需要再次调用第二进程的函数的时候,可以直接执行调用过程,完成一次调用,不需要再执行函数的注册过程;进而,使得调用资源可以重复利用。
一个示例中,图18为本申请实施例提供的其他再一种进程通讯方法的交互示意图一,如图18所示,该方法示出了第一注册表函数的注册过程;该方法包括:该方法包括了以下过程:
步骤81、第二进程向第二组件发送第一注册请求消息,第一注册请求消息用于指示对第一注册表函数进行注册处理。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第二进程与第二组件之间交互的第一注册请求消息为Regist_function。例如,Process B向cmd-trans-b(lib-b)发送Regist_function。
步骤82、第二组件向第一组件发送第一注册请求消息。
一个示例中,第二组件与第一组件之间交互的第一注册请求消息为Regist_request。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送Regist_request。
步骤83、第一组件对第一注册表函数进行注册处理。
步骤84、第一组件向第二组件发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功。
一个示例中,第一组件与第二组件之间交互的第一注册响应消息为Regist_response。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送Regist_response。
步骤85、第二组件向第二进程发送第一注册响应消息。
一个示例中,第二组件与第二进程之间交互的第一注册响应消息为Return。例如,cmd-trans-b(lib-b)向Process B发送Return。
805、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一调用指令为第一组件获取到第一进程发起的第一调取命令之后发出的。
示例性地,本步骤可以案件图15的步骤701,不再赘述。
806、第二组件向第二进程发送第二调取命令,其中,第二调取命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
示例性地,本步骤可以案件图15的步骤702,不再赘述。
807、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,第一调用响应消息为第二组件接收到第二进程返回的第一返回值之后发出的。
示例性地,本步骤可以案件图15的步骤703,不再赘述。
808、第一组件向第一进程反馈第一返回值。
示例性地,本步骤可以案件图15的步骤704,不再赘述。
并且,在执行了步骤805-806之后,完成了对第一注册表函数的调用,不会执行其他指令了;同时,进程(线程)之间的调用是并发进行的,构成了池资源(包括内存池和线程池),进而不会造成内存碎片的积累,也不会耗费端口,以及不需要不断的切换进程。
并且,步骤801-804是第二组件向第一组件注册第一注册表函数,进而通过步骤805-806,第一进程可以向第二进程中去调用第一注册表函数。当第二组件需要向第一组件注册其他注册表函数的时候,注册过程也可以参见步骤801-804;然后,参见步骤805-806,第一进程可以向第二进程中去调取其他注册表函数。并且,不同的注册表函数具有各自的唯一标识。从而,各个注册表函数的注册过程之间互不干扰,可以同时进程;各个注册表函数的调用过程之间互不干扰,可以同时进行。
一个示例中,图19为本申请实施例提供的其他再一种进程通讯方法的交互示意图二,如图19所示,该方法示出了第一注册表函数的注册过程和调用过程;该方法包括:该方法包括了以下过程:
步骤91、第二进程向第二组件发送第一注册请求消息,第一注册请求消息用于指示对第一注册表函数进行注册处理。
步骤92、第二组件向第一组件发送第一注册请求消息。
步骤93、第一组件对第一注册表函数进行注册处理。
步骤94、第一组件向第二组件发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功。
步骤95、第二组件向第二进程发送第一注册响应消息。
在执行了步骤91-95之后,完成了第一注册表函数的注册。就可以执行步骤96-392。
步骤96、第一进程向第一组件发送第一调取命令,第一调取命令用于指示调用第二进程的第一注册表函数。
步骤97、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数。
步骤98、第二组件向第二进程发送交互命令,其中,交互命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
步骤99、第二进程向第二组件返回第一返回值。
步骤991、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,或者,第一调用响应消息中包括第一返回值。
步骤992、第一组件向第一进程反馈第一返回值。
在第一进程需要调用第二进程的函数的时候,通过步骤96-992的过程,利用第一组件、第二组件的交互指令,第一进程可以完成第二进程的第一注册表函数的调用。在第一进程需要再次调用第二进程的函数的时候,可以直接执行步骤96-992的过程,完成一次调用,不需要再执行步骤91-95的注册过程。
本实施例,在上述实施例的基础上,在控制器的内部利用第一组件、第二组件,完成对第二进程的第一注册表函数的注册;使得,第一进程可以调用第二进程的第一注册表函数。简化了代码方式的进程调用过程,降低了代码开发量。并且,在第一进程需要调用第二进程的函数的时候,利用第一组件、第二组件的交互指令,第一组件可以完成第二进程的第一注册表函数的调用;在第一进程需要再次调用第二进程的函数的时候,可以直接执行调用过程,完成一次调用,不需要再执行函数的注册过程;进而,使得调用资源可以重复利用。并且,通过上述函数注册过程,对资源进行动态申请和动态分配,即,只有在初次需要调用函数的之后,才回去注册函数,不注册不会分配资源,进而减少系统资源的浪费。并且,在完成了一次调用之后,不会执行其他指令了,不会造成内存碎片的积累,也不会耗费端口;并且,不同的注册表函数的调用过程之间互不干扰,可以同时进行,实现了进程和接口的并发访问。
图20为本申请实施例提供的又有一种进程通讯方法的流程示意图,该方法应用于控制器,控制器中运行有第一进程、第一组件、第二进程和第二组件。如图20所示,该方法包括:
901、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一调用指令为第一组件获取到第一进程发起的第一调取命令之后发出的。
示例性地,本实施例的执行主体为控制器。控制器可以设置在一个智能设备中;控制器可以用于进行智能的数据预算。在控制器中运行有第一进程、第一组件、第二进程和第二组件,第一进程和第二进程为智能设备的上层应用所发起的进程,第一组件和第二组件为软件的组件。
本步骤可以案件图15的步骤701,不再赘述。
902、第二组件向第二进程发送第二调取命令,其中,第二调取命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
示例性地,本步骤可以案件图15的步骤702,不再赘述。
903、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,第一调用响应消息为第二组件接收到第二进程返回的第一返回值之后发出的。
示例性地,本步骤可以案件图15的步骤703,不再赘述。
904、第一组件向第一进程反馈第一返回值。
示例性地,本步骤可以案件图15的步骤704,不再赘述。
905、第一组件向第二组件发送第二注册请求,其中,第二注册请求为第一进程所发起的,第二注册请求消息用于指示对第二注册表函数进行注册处理。
示例性地,在步骤901-904中,第一进程通过第一组件、第二组件,去调用第二进程的第一注册表函数。第二进程也可以去调用第一进程的第二注册表函数。
在第二进程通过第二组件、第一组件,去调用第一进程的函数之前,第一组件需要进行函数注册,使得第二进程可以来调用第一进程的函数。
首先,第一进程向第一组件发送第二注册请求消息,第二注册请求消息用于指示对第一进程的第二册表函数进行注册处理。
然后,第一组件向第二组件发送第二注册请求消息。
906、第二组件根据第二注册请求,对第二注册表函数进行注册处理。
示例性地,第二组件需要对第二注册请求消息所指示的第二注册表函数进行注册处理,进而使得第二进程可以通过第二组件、第一组件去调用第一进程的第二注册表函数。此时,第二组件可以直接根据第二注册请求消息,对第二注册表函数进行注册处理。
907、第二组件向第一组件发送第二注册响应消息,其中,第二注册响应消息用于指示第二注册表函数注册成功。
示例性地,第二组件对第二注册表函数完成了注册处理,然后,第二组件需要告知第一组件已经完成了对第二注册表函数的注册处理。第二组件可以向第一组件发送第二注册响应消息,该第二注册响应消息表征第二注册表函数注册成功。
908、第一组件向第一进程发送第二注册响应消息。
示例性地,第一组件向第一进程反馈第二注册响应消息;第一进程就可以获知已经对第二注册表函数注册成功。进而控制器确定第二进程可以去调用与第一进程相关的第二注册表函数。
从而,通过上述函数注册过程,对资源进行动态申请和动态分配,即,只有在初次需要调用函数的之后,才回去注册函数,不注册不会分配资源,进而减少系统资源的浪费。
在执行了步骤905-908之后,完成了第一进程的第二注册表函数的注册。就可以执行了后面的调用步骤了。在完成了对第二注册表函数的注册之后,第二进程可以多次的调用第一进程的第二注册表函数,每一次的调取用过程,可以参见步骤909-912。即,完成了步骤905-908之后,就对第一进程的第二注册表函数进行注册;当第二进程需要调用第一进程的第二注册表函数的时候,直接执行步骤909-912,当第二进程再次需要调用第一进程的第二注册表函数的时候,直接执行步骤909-912。从而,在第二进程需要再次调用第一进程的函数的时候,可以直接执行调用过程,完成一次调用,不需要再执行函数的注册过程;进而,使得调用资源可以重复利用。
909、第二组件向第一组件发送第二调用指令,其中,第二调用指令用于指示第一组件调用第二注册表函数,二注册表函数为与第一进程相关的函数,第二调用指令为第二组件获取到第二进程发起的第三调取命令之后发出的。
示例性地,在智能设备的上层应用发起第二进程的时候,第二进程会向第二组件发出第三调取命令,第三调取命令用于指示调用第一进程的第二注册表函数;第三调取命令是一个远程调用指令。此时,第二注册表函数,也可以称为与第一进程相关的函数;第二注册表函数没有被第二进程调用之前,第二注册表函数只可以被第一进程调用;但是,在本实施例中,第二进程可以发起第三调取命令,进而通过第二组件、第一组件,去向第一进程调用第一进程的第二注册表函数。
第二组件接收到第二进程发起的第三调取命令之后,第二组件向第一组件发送第二调用指令。该第二调用指令是实际的可以调用第二注册表函数的指令。
910、第一组件向第一进程发送第四调取命令,其中,第四调取命令用于指示第一进程确定第二注册表函数所对应的第二返回值。
示例性地,在第二调用指令用于指示调用第一进程的第二注册表函数的时候,第二进程实际是需要获取与第二注册表函数对应的第二返回值,即,第二进程只需要得到第二返回值就可以实现调用第二注册表函数。
控制器的第一组件在接收到第二调用指令之后,需要获取与第一进程的第二注册表函数所对应的第二返回值。此时,第一组件向第一进程发送第四调取命令;由于与第一进程的第二注册表函数所对应的第二返回值,是第一进程可以直接获取的,从而,需要第一组件向第一进程发送第四调取命令。
然后,第一进程向第一组件返回第二返回值;从而,第一控制器获取到第二注册表函数所对应的第二返回值。
911、第一组件向第二组件发送第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,第二调用响应消息为第一组件接收到第一进程返回的第二返回值之后发出的。
示例性地,第一组件向第二组件返回第二调取响应消息,第二调取响应消息用于指示出第二返回值,或者,第二调取响应消息中包括第二返回值。
912、第二组件向第二进程反馈第二返回值。
示例性地,第二组件,将第二返回值发送给第二控制器的第二进程。从而,控制器中所运行的第二进程,调取到控制器中所运行的第一进程的第二注册表函数。
步骤909-912为第二进程进行一次调取的过程,即,步骤909-912为第二进程调取一次第一进程的函数的过程;当第二进程再次需要调用第一进程的第二注册表函数的时候,还可以再次重复执行步骤909-912的过程,进而实现调用。
步骤901-904是控制器的第一进程调用控制器的第二进程的函数,步骤909-912是控制器的第二进程调用控制器的第一进程的函数;这两个过程是相互独立执行的,互不干扰,进而控制器内的进程之间的接口调用,可以并发的执行。
一个示例中,图21为本申请实施例提供的又有一种进程通讯方法的交互示意图,如图21所示,该方法应用于控制器的多个进程之间的函数注册和函数调用;控制器中运行有第一进程、第一组件、第二进程和第二组件。如图21所示,该方法包括了以下过程:
步骤2101、第一进程向第一组件发送第二注册请求消息,第二注册请求消息用于指示对第二注册表函数进行注册处理。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第一进程与第一组件之间交互的第二注册请求消息为Regist_function。例如,Process A向cmd-trans-a(lib-a)发送Regist_function。
步骤2102、第一组件向第二组件发送第二注册请求消息。
一个示例中,第一组件与第二组件之间交互的第二注册请求消息为Regist_request。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送Regist_request。
步骤2103、第二组件对第二注册表函数进行注册处理。
步骤2104、第二组件向第一组件发送第二注册响应消息,其中,第二注册响应消息用于指示第二注册表函数注册成功。
一个示例中,第二组件与向第一组件之间交互的第二注册响应消息为Regist_response。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送Regist_response。
步骤2105、第一组件向第一进程发送第二注册响应消息。
一个示例中,第一组件与第一进程之间交互的第二注册响应消息为Return。例如,cmd-cmd-trans-a(lib-a)向Process A发送Return。
在执行了步骤2101-45之后,完成了第二注册表函数的注册。就可以执行步骤2106-492。
步骤2106、第二进程向第二组件发送第二调取命令,第二调取命令用于指示调用第一进程的第二注册表函数。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第二调取命令为notify。例如,Process B向cmd-trans-b(lib-b),发送notify,notify用于指示调用Process A的第二注册表函数。
步骤2107、第二组件向第一组件发送第二调用指令,其中,第二调用指令用于指示第一组件调用第二注册表函数。
一个示例中,第二调用指令为request_send。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送request_send。
步骤2108、第一组件向第一进程发送交互命令,其中,该交互命令用于指示第一进程确定第二注册表函数所对应的第二返回值。
一个示例中,交互命令为callback。例如,cmd-trans-a(lib-a)向Process A发送为callback。
步骤2109、第一进程向第一组件返回第二返回值。
一个示例中,第一进程与第一组件之间用于传递第二返回值的指令为callback_return。例如,Process A向cmd-trans-a(lib-a)发送callback_return。
步骤2110、第一组件向第二组件发送第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,或者,第二调用响应消息中包括第二返回值。
一个示例中,第二调用响应消息为response_send。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送response_send。
步骤2111、第二组件向第二进程反馈第二返回值。
一个示例中,第二组件与第二进程之间用于传递第二返回值的指令为notify_return。例如,cmd-trans-b(lib-b)向Process B发送notify_return。
在第二控制器的第二进程需要调用第一控制器的第一进程的函数的时候,通过步骤2106-2111的过程,利用第二组件、第一组件的交互指令,第二控制器可以完成第一进程的第二注册表函数的调用。在第二控制器的第二进程需要再次调用第一控制器的第一进程的函数的时候,可以直接执行步骤2106-2111的过程,完成一次调用,不需要再执行步骤2101-2105的注册过程。
本实施例,在上述实施例的基础上,还可以实现控制器的第二进程需要调用第一控制器的第一进程的函数,该调用过程依然具备第一进程的调用过程的优点。并且,控制器的第一进程调用第制器的第二进程的函数、控制器的第二进程调用控制器的第一进程的函数,这两个过程是相互独立执行的,互不干扰,进而控制器内的进程之间的接口调用,可以并发的执行;实现高并发访问。
图22为本申请实施例提供的另有一种进程通讯方法的流程示意图,该方法应用于控制器,控制器中运行有第一进程、第一组件、第二进程和第二组件。如图22所示,该方法包括:
2201、第一组件获取第一进程发起的第一初始化命令,并且第二组件获取第二进程发起的第二初始化命令。
示例性,本实施例的执行主体为控制器。控制器可以设置在一个智能设备中;控制器可以用于进行智能的数据预算。在控制器中运行有第一进程、第一组件、第二进程和第二组件,第一进程和第二进程为智能设备的上层应用所发起的进程,第一组件和第二组件为软件的组件。
在第一进程与第二进程进行交互之前,需要将第一进程与第二进程之间建立交互关系。
首先,第一进程向第一组件发送第一初始化命令,第一初始化命令用于表征第一进程指示进行进程信息的初始化匹配;并且,第二进程向第二组件发送第二初始化命令,第二初始化命令用于表征第二进程指示进行进程信息的初始化匹配。第一初始化命令的发出时间、第二初始化命令的发出时间,两者之间不收到相互之间的影响,发出时间不做限制。
2202、第二组件向第一组件发送交互信息。
示例性,在第二组件接收到第二进程发送的第二初始化命令之后,第二组件向第一组件发送交互信息。
一个示例中,第二进程向第二组件发送第二初始化命令;第二组件向第一组件发送交互信息;第一组件等待第一进程发出第一初始化命令。
2203、第一组件根据交互信息,向第二组件发送第一能力信息,其中,第一能力信息为第一进程的能力信息。
示例性地,第一组件向第二组件,发送第一进程的能力信息;将第一进程的能力信息,称为第一能力信息。
第二组件接收到第一进程的能力信息之后,对第一进程的能力信息和第二进程的能力信息进行匹配;将第二进程的能力信息,称为第二能力信息。第二组件根据第一能力信息和第二能力信息,对第一进程和第二进程进行能力匹配。
一个示例中,第一能力信息表征了第一进程的需求,例如,第一进程需要的能力、接口。第二能力信息表征了第二进程的需求,例如,第二进程需要的能力、接口。
2204、第二组件对第一能力信息与第二能力信息进行匹配,其中,第二能力信息为第二进程的能力信息。
示例性地,第二组件在将述第一能力信息与第二能力信息的匹配成功之后,确定初始化完成,即,第一进程和第二进程之间可以进行交互了。
2205、第二组件向第一组件发送的初始化响应消息,其中,初始化响应消息表征第二组件对第一能力信息与第二能力信息的匹配成功。
示例性地,第二组件向第一组件发送初始化响应消息,初始化响应消息用于指示初始化完成。
2206、第二组件向第一组件发送心跳指令。
2207、第一组件向第二组件发送心跳响应消息。
示例性地,步骤2206-2207在步骤2205之后就可以进行执行,在第一组件与第二组件之间进行函数注册和函数调用的过程中,步骤2206-2207可以持续进行,以保证第一组件和第二组件之间保持持续的连接。可知,步骤2206-2207在初始化完成之后,且在反初始化完成之前,会持续进行。
一个示例中,在步骤2206之后,的第一组件若确定第一组件出现异常问题,则第一组件可以向第一进程反馈异常消息;第二组件在确定预设时间之后,还没有收到心跳响应消息,则第二组件向第二进程反馈异常消息。
一个示例中,还可以包括以下过程:第一组件,可以向第二组件发送的心跳指令;第二组件向第一组件发送心跳响应消息。
2208、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一调用指令为第一组件获取到第一进程发起的第一调取命令之后发出的。
示例性地,本步骤可以案件图15的步骤701,不再赘述。
2209、第二组件向第二进程发送第二调取命令,其中,第二调取命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
示例性地,本步骤可以案件图15的步骤702,不再赘述。
2210、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,第一调用响应消息为第二组件接收到第二进程返回的第一返回值之后发出的。
示例性地,本步骤可以案件图15的步骤703,不再赘述。
2211、第一组件向第一进程反馈第一返回值。
示例性地,本步骤可以案件图15的步骤704,不再赘述。
2212、第一组件获取第一进程发起的反初始化命令。
示例性地,第一进程可以发起反初始化;第一进程向第一组件发送反初始化命令。
2213、第一组件向第二组件发送结束指令,其中,结束指令用于指示第二组件结束第一进程与第二进程之间的调用关系。
示例性地,第一组件向第二组件发送结束指令,该结束指令用于指示结束第一进程和第二进程之间的调用关系。
2214、第二组件根据结束指令,对第一进程与第二进程之间的调用关系进行处理。
示例性地,第二组件根据结束指令,结束第一进程与第二进程之间的调用关系。一个示例中,第二组件向第二进程发送关闭指令,其中,关闭指令用于指示结束第二进程的运行;进而,第二组件结束第一进程与第二进程之间的调用关系。
2215、第二组件向第一组件和第二进程发送反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程与第二进程之间的调用关系;
示例性地,第二组件在确定结束了第一进程与第二进程之间的调用关系之后,向第一组件发送反初始化响应消息。
2216、第一组件向第一进程发送反初始化响应消息。
示例性地,第一组件在接收到第二组件发送的反初始化响应消息之后,向第一进程发送反初始化响应消息,进而第一进程可以获知第一进程与第二进程之间的调用关系结束。
一个示例中,图23为本申请实施例提供的另有一种进程通讯方法的交互示意图,该方法应用于控制器,控制器中运行有第一进程、第一组件、第二进程和第二组件。如图23所示,该方法包括:
步骤2301、第一进程向第一组件发送第一初始化命令,其中,第一初始化命令用于表征第一进程指示进行进程信息的初始化匹配。
一个示例中,第一控制器中运行有第一组件cmd-trans-a(lib-a)、第一进程Process A。第二控制器中运行有第二组件cmd-trans-b(lib-b)、第二进程Process B。
第一初始化命令为cmd_trans_init。例如,Process A向cmd-trans-a(lib-a)发送cmd_trans_init。
步骤2302、第二进程向第二组件发送第二初始化命令,其中,第二初始化命令用于表征第二进程指示进行进程信息的初始化匹配。
一个示例中,第二初始化命令为cmd_trans_start。例如,Process B向cmd-trans-b(lib-b)发送cmd_trans_start。
步骤2303、第二组件向第一组件接收发送交互信息。
一个示例中,交互信息为Hello123。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送Hello123。
步骤2304、第一组件向第二组件发送第一能力信息,其中,第一能力信息为第一进程的能力信息。
一个示例中,第一能力信息为Init_tables。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送Init_tables。
步骤2305、第二组件根据第一能力信息和预设的第二能力信息进行进程能力匹配,其中,第二能力信息为第二进程的能力信息。
步骤2306、第二组件向第一组件发送初始化响应消息,其中,初始化响应消息用于指示初始化完成。
一个示例中,初始化响应消息为Ack_init_tables。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送Ack_init_tables。
一个示例中,第一组件还可以向第一进程发送初始化响应消息。
在完成了步骤2306之后,就可以开始执行心跳检测了,即进行步骤2307-2308。
步骤2307、第二组件向第一组件发送心跳指令。
一个示例中,心跳指令为heart-beats。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送heart-beats。
步骤2308、第一组件向第二组件发送心跳响应消息。
一个示例中,心跳响应消息为ack-heart-beats。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送ack-heart-beats。
一个示例中,还可以包括:cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送heart-beats;cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送ack-heart-beats。
步骤2309、第一进程向第一组件发送第一调取命令,第一调取命令用于指示调用第二进程的第一注册表函数。
步骤2310、第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数。
步骤2311、第二组件向第二进程发送交互命令,其中,交互命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
步骤2312、第二进程向第二组件返回第一返回值。
步骤2313、第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,或者,第一调用响应消息中包括第一返回值。
步骤2314、第一组件向第一进程反馈第一返回值。
一个示例中,步骤步骤2310-步骤2314可以参见图16的各步骤,不再赘述。
一个示例中,还可以执行图18的各步骤,不再赘述。一个示例中,还可以执行图19的各步骤,不再赘述。一个示例中,还可以执行图21的各步骤,不再赘述。
步骤2315、第一进程向第一组件发送反初始化指令。
一个示例中,反初始化指令为cmd_trans_deinit。例如,Process A向cmd-trans-a(lib-a)发送cmd_trans_deinit。
步骤2316、第一组件向第二组件发送结束指令,其中,结束指令用于指示结束第一进程和第二进程之间的调用关系。
一个示例中,结束指令为bye。例如,cmd-trans-a(lib-a)向cmd-trans-b(lib-b)发送bye。
步骤2317、第二组件向第一组件发送反初始化响应消息。
一个示例中,第二组件根据结束指令结束第一进程和第二进程之间的调用关系。第二组件向第一组件发送反初始化响应消息,反初始化响应消息表征了第一进程和第二进程之间的调用关系已经结束。
第二组件与第一组件之间交互的反初始化响应消息为ack_bye。例如,cmd-trans-b(lib-b)向cmd-trans-a(lib-a)发送ack_bye。
步骤2318、第一组件向第一进程发送反初始化响应消息。
一个示例中,第一组件与第一进程之间交互的反初始化响应消息为deinit_return。例如,cmd-trans-a(lib-a)向第一进程Process发送deinit_return。
步骤2319、第二组件向第二进程发送关闭指令,其中,关闭指令用于指示结束第二进程的运行。
一个示例中,关闭指令为call_shut_down。例如,cmd-trans-b(lib-b)向ProcessB发送call_shut_down。
本实施例,在上述实施例的基础上,通过第一组件与第二组件的交互信息,利用第一组件和第二组件完成初始化,进而第一进程与第二进程之间建立关系,第一进程与第二进程之间,就可以通过第一组件和第二组件,完成函数的注册和调用;以实现不同进程之间的接口调用。并且,在不需要第一进程与第二进程之间再进行接口调用的时候,利用第一组件和第二组件,完成反初始化过程;从而,结束第一进程与第二进程之间的调用关系;不需要再进行心跳检测了,节约组件之间的信令交互,节约信令开销。
图24为本申请实施例提供的一种第一控制器的结构示意图,第一控制器中运行有第一进程和第一组件;如图24所示,第一控制器,包括:
第一获取单元241,用于获取第一进程发起的第一调取命令,其中,第一调取命令用于指示第一组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数;
第一发送单元242,用于向第二控制器发送第一调用指令,其中,第一调用指令用于指示调用第一注册表函数,且第一调用指令用于指示与第二进程相关的第二组件获取第一注册表函数所对应的第一返回值,第二控制器中运行有第二进程和第二组件;
第一接收单元243,用于接收第二控制器发送的第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程获取第一返回值。
一个示例中,第一控制器,还包括:
第二接收单元,用于在第一获取单元获取第一进程发起的第一调取命令之前,接收第二控制器发送的第一注册请求消息,其中,第一注册请求消息为第二控制器的第二进程通过第二组件所发起的,第一注册请求消息用于指示对第一注册表函数进行注册处理。
注册单元,用于根据第一注册请求消息,对第一注册表函数进行注册处理。
一个示例中,第一控制器,还包括:
第二发送单元,用于在第一注册单元根据第一注册请求消息,对第一注册表函数进行注册处理之后,向第二控制器发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功,以使第二进程获取第一注册响应消息。
一个示例中,第一控制器,还包括:
第三接收单元,用于接收第二控制器发送的第二调用指令,其中,第二调用指令用于指示调用第二注册表函数,第二注册表函数为与第一进程相关的函数,第二调用指令为第二控制器获取到第二进程发起的第二调取命令之后发出的。
第二获取单元,用于根据第二调用指令,获取第二注册表函数所对应的第二返回值,其中,第二返回值为第一进程所确定的。
第三发送单元,用于向第二控制器发送第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,以使第二进程获取第二返回值。
一个示例中,第一控制器,还包括:
第四发送单元,用于在第三接收单元接收第二控制器发送的第二调用指令之前,向第二控制器发送第二注册请求消息,其中,第二注册请求消息为第一进程所发起的,第二注册请求消息用于指示第二控制器的第二组件对第二注册表函数进行注册处理。
一个示例中,第一控制器,还包括:
第四接收单元,用于在第四发送单元向第二控制器发送第二注册请求消息之后,接收第二控制器发送的第二注册响应消息,其中,第二注册响应消息指示第二注册表函数注册成功,以使第一进程获取第二注册响应消息。
一个示例中,第一控制器,还包括:
第三获取单元,用于在第一获取单元获取第一进程发起的第一调取命令之前,获取第一进程发起的第一初始化命令。
第五接收单元,用于接收第二控制器发送的交互信息,其中,交互信息表征第二控制器的第二组件获取到第二进程发起的第二初始化命令。
第五发送单元,用于向第二控制器发送第一能力信息,其中,第一能力信息为第一进程的能力信息,第一能力信息用于第二控制器对第一能力信息与第二能力信息进行匹配,第二能力信息为第二进程的能力信息。
一个示例中,第一控制器,还包括:
第六接收单元,用于在第五发送单元向第二控制器发送第一能力信息之后,接收第二控制器发送的初始化响应消息,其中,初始化响应消息表征第二控制器的第二组件对第一能力信息与第二能力信息的匹配成功。
一个示例中,第一控制器,还包括:
第四获取单元,用于获取第一进程发起的反初始化命令。
第六发送单元,用于向第二控制器发送结束指令,其中,结束指令用于指示第二控制器的第二组件结束第一进程与第二进程之间的调用关系。
一个示例中,第一控制器,还包括:
第六接收单元,用于在第六发送单元向第二控制器发送结束指令之后,接收第二控制器发送的反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程与第二进程之间的调用关系,以使第一进程获取反初始化响应消息。
一个示例中,第一控制器,还包括:
第七接收单元,用于接收第二控制器发送的心跳指令。
第七发送单元,用于向第二控制器发送心跳响应消息。
本实施例提供的第一控制器,用于实现图4-图14所示实施例提供的进程通讯方法中的第一控制器的技术方案,其实现原理和技术效果类似,不再赘述。
图25为本申请实施例提供的一种第二控制器的结构示意图,第二控制器中运行有第二进程和第二组件;如图25所示,第二控制器,包括:
第一接收单元251,用于接收第一控制器发送的第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一控制器中运行有第一进程和第一组件,第一调用指令为第一控制器获取到第一进程发起的第一调取命令之后发出的。
第一获取单元252,用于根据第一调用指令,获取第一注册表函数所对应的第一返回值,其中,第一返回值为第二进程所确定的。
第一发送单元253,用于向第一控制器发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程通过第一组件获取第一返回值。
一个示例中,第二控制器,还包括:
第二发送单元,用于在第一接收单元接收第一控制器发送的第一调用指令之前,向第一控制器发送第一注册请求消息,其中,第一注册请求消息为第二进程所发起的,第一注册请求消息用于指示第一控制器的第一组件对第一注册表函数进行注册处理。
一个示例中,第二控制器,还包括:
第二接收单元,用于在第二发送单元向第一控制器发送第一注册请求消息之后,接收第一控制器发送的第一注册响应消息,其中,第一注册响应消息指示第一注册表函数注册成功,以使第二进程获取第一注册响应消息。
一个示例中,第二控制器,还包括:
第二获取单元,用于获取第二进程发起的第二调取命令,其中,第二调取命令用于指示第二组件调用第二注册表函数,第二注册表函数为与第一进程相关的函数。
第三发送单元,用于向第一控制器发送第二调用指令,其中,第二调用指令用于指示调用第二注册表函数,且第二调用指令用于指示与第一进程相关的第一组件获取第二注册表函数所对应的第二返回值。
第三接收单元,用于接收第一控制器发送的第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,以使第二进程获取第二返回值。
一个示例中,第二控制器,还包括:
第四接收单元,用于在第二获取单元获取第二进程发起的第二调取命令之前,接收第一控制器发送的第二注册请求消息,其中,第二注册请求消息为第一控制器的第一进程通过第一组件所发起的,第二注册请求消息用于指示对第二注册表函数进行注册处理。
注册单元,用于根据第二注册请求消息,对第二注册表函数进行注册处理。
一个示例中,第二控制器,还包括:
第四发送单元,用于在注册单元根据第二注册请求消息,对第二注册表函数进行注册处理之后,向第一控制器发送第二注册响应消息,其中,第二注册响应消息指示第二注册表函数注册成功,以使第一进程获取第二注册响应消息。
一个示例中,第二控制器,还包括:
在第一接收单元接收第一控制器发送的第一调用指令之前,获取第二进程发起的第二初始化命令,并向第一控制器发送交互信息。
第三获取单元,用于接收第一控制器发送的第一能力信息,其中,第一能力信息为第一进程的能力信息,第一能力信息为第一控制器在获取到第一进程发起的第一初始化命令之后发出的。
匹配单元,用于对第一能力信息与第二能力信息进行匹配,其中,第二能力信息为第二进程的能力信息。
一个示例中,第二控制器,还包括:
第五发送单元,用于在匹配单元对第一能力信息与第二能力信息进行匹配之后,在对第一能力信息与第二能力信息匹配成功之后,向第一控制器发送初始化响应消息,其中,初始化响应消息表征第二控制器的第二组件对第一能力信息与第二能力信息的匹配成功。
一个示例中,第二控制器,还包括:
第五接收单元,用于接收第一控制器发送的结束指令,其中,结束指令用于指示第二组件结束第一进程与第二进程之间的调用关系,结束指令为第一控制器的第一组件获取到反初始化命令之后所发出的,反初始化命令为第一进程所发起的。
生成单元,用于生成反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程与第二进程之间的调用关系,以使第二进程获取反初始化响应消息。
一个示例中,第二控制器,还包括:
第六发送单元,用于在生成单元生成反初始化响应消息之后,向第一控制器发送反初始化响应消息,以使第一进程获取反初始化响应消息。
一个示例中,第二控制器,还包括:
第七发送单元,用于向第一控制器发送心跳指令。
第六接收单元,用于接收第一控制器发送的心跳响应消息。
本实施例提供的第二控制器,用于实现图4-图14所示实施例提供的进程通讯方法中的第二控制器的技术方案,其实现原理和技术效果类似,不再赘述。
图26为本申请实施例提供的一种控制器的结构示意图,控制器中运行有第一进程261、第一组件262、第二进程263和第二组件264;如图26所示,控制器中:
第一组件262,用于向第二组件264发送第一调用指令,其中,第一调用指令用于指示第二组件264调用第一注册表函数,第一注册表函数为与第二进程263相关的函数,第一调用指令为第一组件262获取到第一进程261发起的第一调取命令之后发出的。
第二组件264,用于向第二进程263发送第二调取命令,其中,第二调取命令用于指示第二进程263确定第一注册表函数所对应的第一返回值。
第二组件264,用于向第一组件262发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,第一调用响应消息为第二组件264接收到第二进程263返回的第一返回值之后发出的。
第一组件262,用于向第一进程261反馈第一返回值。
一个示例中,第二组件264,还用于在第一组件262向第二组件264发送第一调用指令之前,向第一组件262发送第一注册请求,其中,第一注册请求为第二进程263所发起的,第一注册请求消息用于指示对第一注册表函数进行注册处理。
第一组件262,还用于根据第一注册请求,对第一注册表函数进行注册处理。
一个示例中,第一组件262,还用于在第一组件262根据第一注册请求,对第一注册表函数进行注册处理之后,向第二组件264发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功。
第二组件264,还用于向第二进程263发送第一注册响应消息。
一个示例中,第二组件264,还用于向第一组件262发送第二调用指令,其中,第二调用指令用于指示第一组件262调用第二注册表函数,二注册表函数为与第一进程261相关的函数,第二调用指令为第二组件264获取到第二进程263发起的第三调取命令之后发出的。
第一组件262,还用于向第一进程261发送第四调取命令,其中,第四调取命令用于指示第一进程261确定第二注册表函数所对应的第二返回值。
第一组件262,还用于向第二组件264发送第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,第二调用响应消息为第一组件262接收到第一进程261返回的第二返回值之后发出的。
第二组件264向第二进程263反馈第二返回值。
一个示例中,第一组件262,还用于在第二组件264向第一组件262发送第二调用指令之前,向第二组件264发送第二注册请求,其中,第二注册请求为第一进程261所发起的,第二注册请求消息用于指示对第二注册表函数进行注册处理。
第二组件264,还用于根据第二注册请求,对第二注册表函数进行注册处理。
一个示例中,第二组件264,还用于在第二组件264根据第二注册请求,对第二注册表函数进行注册处理之后,向第一组件262发送第二注册响应消息,其中,第二注册响应消息用于指示第二注册表函数注册成功。
第一组件262,还用于向第一进程261发送第二注册响应消息。
一个示例中,第一组件262,还用于在第一组件262向第二组件264发送第一调用指令之前,获取第一进程261发起的第一初始化命令,并且第二组件264获取第二进程263发起的第二初始化命令。
第二组件264,还用于向第一组件262发送交互信息。
第一组件262,还用于根据交互信息,向第二组件264发送第一能力信息,其中,第一能力信息为第一进程261的能力信息。
第二组件264,还用于对第一能力信息与第二能力信息进行匹配,其中,第二能力信息为第二进程263的能力信息。
一个示例中,第二组件264,还用于在第二组件264对第一能力信息与第二能力信息进行匹配之后,向第一组件262发送的初始化响应消息,其中,初始化响应消息表征第二组件264对第一能力信息与第二能力信息的匹配成功。
一个示例中,第一组件262,还用于获取第一进程261发起的反初始化命令。
第一组件262,还用于向第二组件264发送结束指令,其中,结束指令用于指示第二组件264结束第一进程261与第二进程263之间的调用关系。
第二组件264,还用于根据结束指令,对第一进程261与第二进程263之间的调用关系进行处理。
一个示例中,第二组件264,还用于在第二组件264根据结束指令,对第一进程261与第二进程263之间的调用关系进行处理之后,向第一组件262和第二进程263发送反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程261与第二进程263之间的调用关系。
第一组件262,还用于向第一进程261发送反初始化响应消息。
一个示例中,第二组件264,还用于向第一组件262发送心跳指令。
第一组件262,还用于向第二组件264发送心跳响应消息。
本实施例提供的控制器,用于实现图15-图23所示实施例提供的进程通讯方法中的控制器的技术方案,其实现原理和技术效果类似,不再赘述。
图27为本申请实施例提供的另一种第一控制器的结构示意图,如图27所示,该第一控制器包括:
至少一个处理器(processor)271,图27中以一个处理器271为例;第一控制器还包括了存储器(memory)272;还可以包括通信接口(Communication Interface)273和总线274。其中,处理器271、存储器272、通信接口273、可以通过总线274完成相互间的通信。通信接口273可以用于信息传输。处理器271可以调用存储器274中的逻辑指令,以执行上述实施例的进程通讯方法。
此外,上述的存储器272中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器272作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器271通过运行存储在存储器272中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的进程通讯方法。
存储器272可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器272可以包括高速随机存取存储器,还可以包括非易失性存储器。
处理器271中运行有第一进程和第一组件。
一个示例中,处理器271,用于获取第一进程发起的第一调取命令,其中,第一调取命令用于指示第一组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数。
处理器271,还用于通过通信接口273向第二控制器发送第一调用指令,其中,第一调用指令用于指示调用第一注册表函数,且第一调用指令用于指示与第二进程相关的第二组件获取第一注册表函数所对应的第一返回值,第二控制器中运行有第二进程和第二组件。
处理器271,还用于通过通信接口273接收第二控制器发送的第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程获取第一返回值。
一个示例中,处理器271在获取第一进程发起的第一调取命令之前,还用于通过通信接口273接收第二控制器发送的第一注册请求消息,其中,第一注册请求消息为第二控制器的第二进程通过第二组件所发起的,第一注册请求消息用于指示对第一注册表函数进行注册处理。
处理器271,还用于根据第一注册请求消息,对第一注册表函数进行注册处理。
一个示例中,处理器271,还用于在根据第一注册请求消息,对第一注册表函数进行注册处理之后,通过通信接口273向第二控制器发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功,以使第二进程获取第一注册响应消息。
一个示例中,处理器271,还用于通过通信接口273接收第二控制器发送的第二调用指令,其中,第二调用指令用于指示调用第二注册表函数,第二注册表函数为与第一进程相关的函数,第二调用指令为第二控制器获取到第二进程发起的第二调取命令之后发出的。
处理器271,还用于根据第二调用指令,获取第二注册表函数所对应的第二返回值,其中,第二返回值为第一进程所确定的。
处理器271,还用于通过通信接口273向第二控制器发送第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,以使第二进程获取第二返回值。
一个示例中,处理器271在接收第二控制器发送的第二调用指令之前,还用于通过通信接口273向第二控制器发送第二注册请求消息,其中,第二注册请求消息为第一进程所发起的,第二注册请求消息用于指示第二控制器的第二组件对第二注册表函数进行注册处理。
一个示例中,处理器271在向第二控制器发送第二注册请求消息之后,还用于通过通信接口273接收第二控制器发送的第二注册响应消息,其中,第二注册响应消息指示第二注册表函数注册成功,以使第一进程获取第二注册响应消息。
一个示例中,处理器271在获取第一进程发起的第一调取命令之前,还用于获取第一进程发起的第一初始化命令,并且接收第二控制器发送的交互信息,其中,交互信息表征第二控制器的第二组件获取到第二进程发起的第二初始化命令;
处理器271,还用于通过通信接口273向第二控制器发送第一能力信息,其中,第一能力信息为第一进程的能力信息,第一能力信息用于第二控制器对第一能力信息与第二能力信息进行匹配,第二能力信息为第二进程的能力信息。
一个示例中,处理器271在向第二控制器发送第一能力信息之后,还用于通过通信接口273接收第二控制器发送的初始化响应消息,其中,初始化响应消息表征第二控制器的第二组件对第一能力信息与第二能力信息的匹配成功。
一个示例中,处理器271,还用于获取第一进程发起的反初始化命令。
处理器271,还用于通过通信接口273向第二控制器发送结束指令,其中,结束指令用于指示第二控制器的第二组件结束第一进程与第二进程之间的调用关系。
一个示例中,处理器271在向第二控制器发送结束指令之后,还用于通过通信接口273接收第二控制器发送的反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程与第二进程之间的调用关系,以使第一进程获取反初始化响应消息。
一个示例中,处理器271,还用于通过通信接口273接收第二控制器发送的心跳指令,向第二控制器发送心跳响应消息。
本实施例提供的第一控制器,用于实现图4-图14所示实施例提供的进程通讯方法中的第一控制器的技术方案,其实现原理和技术效果类似,不再赘述。
图28为本申请实施例提供的另一种第二控制器的结构示意图,如图28所示,该第二控制器包括:
至少一个处理器(processor)281,图28中以一个处理器281为例;第一控制器还包括了存储器(memory)282;还可以包括通信接口(Communication Interface)283和总线284。其中,处理器281、存储器282、通信接口283、可以通过总线284完成相互间的通信。通信接口283可以用于信息传输。处理器281可以调用存储器284中的逻辑指令,以执行上述实施例的进程通讯方法。
此外,上述的存储器282中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器282作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器281通过运行存储在存储器282中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的进程通讯方法。
存储器282可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器282可以包括高速随机存取存储器,还可以包括非易失性存储器。
处理器281中运行有第二进程和第二组件。
一个示例中,处理器281,用于通过通信接口283接收第一控制器发送的第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一控制器中运行有第一进程和第一组件,第一调用指令为第一控制器获取到第一进程发起的第一调取命令之后发出的。
处理器281,还用于根据第一调用指令,获取第一注册表函数所对应的第一返回值,其中,第一返回值为第二进程所确定的。
处理器281,还用于通过通信接口283向第一控制器发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,以使第一进程通过第一组件获取第一返回值。
一个示例中,处理器281在接收第一控制器发送的第一调用指令之前,还用于通过通信接口283向第一控制器发送第一注册请求消息,其中,第一注册请求消息为第二进程所发起的,第一注册请求消息用于指示第一控制器的第一组件对第一注册表函数进行注册处理。
一个示例中,处理器281在向第一控制器发送第一注册请求消息之后,还用于通过通信接口283接收第一控制器发送的第一注册响应消息,其中,第一注册响应消息指示第一注册表函数注册成功,以使第二进程获取第一注册响应消息。
一个示例中,处理器281,还用于获取第二进程发起的第二调取命令,其中,第二调取命令用于指示第二组件调用第二注册表函数,第二注册表函数为与第一进程相关的函数。
处理器281,还用于通过通信接口283向第一控制器发送第二调用指令,其中,第二调用指令用于指示调用第二注册表函数,且第二调用指令用于指示与第一进程相关的第一组件获取第二注册表函数所对应的第二返回值。
处理器281,还用于通过通信接口283接收第一控制器发送的第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,以使第二进程获取第二返回值。
一个示例中,处理器281在获取第二进程发起的第二调取命令之前,还用于通过通信接口283接收第一控制器发送的第二注册请求消息,其中,第二注册请求消息为第一控制器的第一进程通过第一组件所发起的,第二注册请求消息用于指示对第二注册表函数进行注册处理;
处理器281,还用于根据第二注册请求消息,对第二注册表函数进行注册处理。
一个示例中,处理器281在根据第二注册请求消息,对第二注册表函数进行注册处理之后,还用于通过通信接口283向第一控制器发送第二注册响应消息,其中,第二注册响应消息指示第二注册表函数注册成功,以使第一进程获取第二注册响应消息。
一个示例中,处理器281在接收第一控制器发送的第一调用指令之前,还用于获取第二进程发起的第二初始化命令,并向第一控制器发送交互信息。
处理器281,还用于通过通信接口283接收第一控制器发送的第一能力信息,其中,第一能力信息为第一进程的能力信息,第一能力信息为第一控制器在获取到第一进程发起的第一初始化命令之后发出的。
处理器281,还用于对第一能力信息与第二能力信息进行匹配,其中,第二能力信息为第二进程的能力信息。
一个示例中,处理器281在对第一能力信息与第二能力信息进行匹配之后,还用于在对第一能力信息与第二能力信息匹配成功之后,通过通信接口283向第一控制器发送初始化响应消息,其中,初始化响应消息表征第二控制器的第二组件对第一能力信息与第二能力信息的匹配成功。
一个示例中,处理器281,还用于通过通信接口283接收第一控制器发送的结束指令,其中,结束指令用于指示第二组件结束第一进程与第二进程之间的调用关系,结束指令为第一控制器的第一组件获取到反初始化命令之后所发出的,反初始化命令为第一进程所发起的。
处理器281,还用于生成反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程与第二进程之间的调用关系,以使第二进程获取反初始化响应消息。
一个示例中,处理器281,还用于在生成反初始化响应消息之后,通过通信接口283向第一控制器发送反初始化响应消息,以使第一进程获取反初始化响应消息。
一个示例中,处理器281,还用于通过通信接口283向第一控制器发送心跳指令,接收第一控制器发送的心跳响应消息。
本实施例提供的第二控制器,用于实现图4-图14所示实施例提供的进程通讯方法中的第二控制器的技术方案,其实现原理和技术效果类似,不再赘述。
图29为本申请实施例提供的另一种控制器的结构示意图,如图29所示,该控制器包括:
至少一个处理器(processor)291,图29中以一个处理器291为例;第一控制器还包括了存储器(memory)292;还可以包括通信接口(Communication Interface)293和总线294。其中,处理器291、存储器292、通信接口293、可以通过总线294完成相互间的通信。通信接口293可以用于信息传输。处理器291可以调用存储器294中的逻辑指令,以执行上述实施例的进程通讯方法。
此外,上述的存储器292中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器292作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器291通过运行存储在存储器292中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的进程通讯方法。
存储器292可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器292可以包括高速随机存取存储器,还可以包括非易失性存储器。
处理器291中运行有第一进程、第一组件、第二进程和第二组件。
处理器291,用于通过第一组件向第二组件发送第一调用指令,其中,第一调用指令用于指示第二组件调用第一注册表函数,第一注册表函数为与第二进程相关的函数,第一调用指令为第一组件获取到第一进程发起的第一调取命令之后发出的;
处理器291,还用于通过第二组件向第二进程发送第二调取命令,其中,第二调取命令用于指示第二进程确定第一注册表函数所对应的第一返回值。
处理器291,还用于通过第二组件向第一组件发送第一调用响应消息,其中,第一调用响应消息用于指示第一返回值,第一调用响应消息为第二组件接收到第二进程返回的第一返回值之后发出的。
处理器291,还用于通过第一组件向第一进程反馈第一返回值。
一个示例中,处理器291,还用于在第一组件向第二组件发送第一调用指令之前,通过第二组件向第一组件发送第一注册请求,其中,第一注册请求为第二进程所发起的,第一注册请求消息用于指示对第一注册表函数进行注册处理。
处理器291,还用于通过第一组件根据第一注册请求,对第一注册表函数进行注册处理。
一个示例中,处理器291,还用于在第一组件根据第一注册请求,对第一注册表函数进行注册处理之后,通过第一组件向第二组件发送第一注册响应消息,其中,第一注册响应消息用于指示第一注册表函数注册成功。
处理器291,还用于通过第二组件向第二进程发送第一注册响应消息。
一个示例中,处理器291,还用于通过第二组件向第一组件发送第二调用指令,其中,第二调用指令用于指示第一组件调用第二注册表函数,二注册表函数为与第一进程相关的函数,第二调用指令为第二组件获取到第二进程发起的第三调取命令之后发出的。
处理器291,还用于第一组件向第一进程发送第四调取命令,其中,第四调取命令用于指示第一进程确定第二注册表函数所对应的第二返回值。
处理器291,还用于第一组件向第二组件发送第二调用响应消息,其中,第二调用响应消息用于指示第二返回值,第二调用响应消息为第一组件接收到第一进程返回的第二返回值之后发出的。
处理器291,还用于第二组件向第二进程反馈第二返回值。
一个示例中,处理器291,还用于在第二组件向第一组件发送第二调用指令之前,通过第一组件向第二组件发送第二注册请求,其中,第二注册请求为第一进程所发起的,第二注册请求消息用于指示对第二注册表函数进行注册处理;
处理器291,还用于第二组件根据第二注册请求,对第二注册表函数进行注册处理。
一个示例中,处理器291,还用于在第二组件根据第二注册请求,对第二注册表函数进行注册处理之后,通过第二组件向第一组件发送第二注册响应消息,其中,第二注册响应消息用于指示第二注册表函数注册成功;
处理器291,还用于通过第一组件向第一进程发送第二注册响应消息。
一个示例中,处理器291,还用于在第一组件向第二组件发送第一调用指令之前,通过第一组件获取第一进程发起的第一初始化命令,并且第二组件获取第二进程发起的第二初始化命令;
处理器291,还用于通过第二组件向第一组件发送交互信息。
处理器291,还用于通过第一组件根据交互信息,向第二组件发送第一能力信息,其中,第一能力信息为第一进程的能力信息。
处理器291,还用于通过第二组件对第一能力信息与第二能力信息进行匹配,其中,第二能力信息为第二进程的能力信息。
一个示例中,处理器291,还用于在第二组件对第一能力信息与第二能力信息进行匹配之后,通过第二组件向第一组件发送的初始化响应消息,其中,初始化响应消息表征第二组件对第一能力信息与第二能力信息的匹配成功。
一个示例中,处理器291,还用于通过第一组件获取第一进程发起的反初始化命令。
处理器291,还用于通过第一组件向第二组件发送结束指令,其中,结束指令用于指示第二组件结束第一进程与第二进程之间的调用关系。
处理器291,还用于通过第二组件根据结束指令,对第一进程与第二进程之间的调用关系进行处理。
一个示例中,处理器291,还用于在第二组件根据结束指令,对第一进程与第二进程之间的调用关系进行处理之后,通过第二组件向第一组件和第二进程发送反初始化响应消息,其中,反初始化响应消息用于指示已经结束第一进程与第二进程之间的调用关系。
处理器291,还用于通过第一组件向第一进程发送反初始化响应消息。
一个示例中,处理器291,还用于通过第二组件向第一组件发送心跳指令;通过第一组件向第二组件发送心跳响应消息。
本实施例提供的控制器,用于实现图15-图23所示实施例提供的进程通讯方法中的控制器的技术方案,其实现原理和技术效果类似,不再赘述。
上述各单元可以是硬件电路包括数字电路,模拟电路等等。硬件电路的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。上述运算装置中的运算单元可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。上述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
图30为本申请实施例提供的一种第一控制设备的示意图,如图30所示,第一控制设备包括一个或多个如图4-图14所示实施例提供的第一控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;
当第一控制设备包含多个第一控制器时,多个第一控制器间可以通过特定的结构进行连接并传输数据;
其中,多个第一控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个第一控制器共享同一控制系统或拥有各自的控制系统;多个第一控制器共享内存单元或者拥有各自的内存单元。
多个第一控制器的互联方式是任意互联拓扑。该第一控制设备具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
一个示例中,上述内存单元位于第一控制设备中。
图31为本申请实施例提供的一种组合处理装置的示意图,如图31所示,组合处理装置包括如图30提供的第一控制设备,通用互联接口和其他处理装置。
第一控制设备与其他处理装置进行交互,共同完成用户指定的操作。
上述组合装置可以作为手机、机器人、无人机等智能设备的系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。
图32为本申请实施例提供的一种处理芯片的示意图一,如图32所示,处理芯片包括如图30提供的第一控制设备。
一个示例中,处理芯片中包括至少一个第一控制设备。
图33为本申请实施例提供的一种处理芯片的示意图二,如图34所示,处理芯片包括如图31提供的组合处理装置。
一个示例中,处理芯片中包括至少一个组合处理装置。
图34为本申请实施例提供的一种处理芯片的示意图三,如图34所示,处理芯片包括如图30提供的第一控制设备或如图31提供的组合处理装置。
一个示例中,处理芯片中包括至少一个第一控制设备、以及至少一个组合处理装置。第一控制设备与组合处理装置之间可以进行数据交互,也可以不进行数据交互。
图35为本申请实施例提供的一种板卡的示意图,如图35所示,板卡包括如图32-图32提供的处理芯片。
一个示例中,板卡中设置有至少一个处理芯片。
图36为本申请实施例提供的一种电子装置的示意图一,图37为本申请实施例提供的一种电子装置的示意图二,图38为本申请实施例提供的一种电子装置的示意图三,如图36-图38所示,电子装置包括如32-图32提供的处理芯片或者如图35提供的板卡。
其中,该电子装置包括:数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。
图39为本申请实施例提供的一种第二控制设备的示意图,如图39所示,第二控制设备包括一个或多个如图4-图14所示实施例提供的第二控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;
当第二控制设备包含多个第二控制器时,多个第二控制器间可以通过特定的结构进行连接并传输数据;
其中,多个第二控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个第二控制器共享同一控制系统或拥有各自的控制系统;多个第二控制器共享内存单元或者拥有各自的内存单元。
多个第二控制器的互联方式是任意互联拓扑。该第二控制设备具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
一个示例中,上述内存单元位于第二控制设备中。
图40为本申请实施例提供的另一种组合处理装置的示意图,如图40所示,组合处理装置包括如图39提供的第二控制设备,通用互联接口和其他处理装置。
第二控制设备与其他处理装置进行交互,共同完成用户指定的操作。
上述组合装置可以作为手机、机器人、无人机等智能设备的系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。
图41为本申请实施例提供的另一种处理芯片的示意图一,如图41所示,处理芯片包括如图39提供的第二控制设备。
一个示例中,处理芯片中包括至少一个第二控制设备。
图42为本申请实施例提供的另一种处理芯片的示意图二,如图42所示,处理芯片包括如图40提供的组合处理装置。
一个示例中,处理芯片中包括至少一个组合处理装置。
图43为本申请实施例提供的另一种处理芯片的示意图三,如图43所示,处理芯片包括如图39提供的第二控制设备或如图40提供的组合处理装置。
一个示例中,处理芯片中包括至少一个第二控制设备、以及至少一个组合处理装置。第二控制设备与组合处理装置之间可以进行数据交互,也可以不进行数据交互。
图44为本申请实施例提供的另一种板卡的示意图,如图44所示,板卡包括如图41-图43的处理芯片。
一个示例中,板卡中设置有至少一个处理芯片。
图45为本申请实施例提供的另一种电子装置的示意图一,图46为本申请实施例提供的另一种电子装置的示意图二,图47为本申请实施例提供的另一种电子装置的示意图三,如图45-图47所示,电子装置包括如图41-图43提供的处理芯片或者如图44提供的板卡。
其中,该电子装置包括:数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。
图48为本申请实施例提供的一种控制设备的示意图,如图48所示,控制设备包括一个或多个如图4-图14所示实施例提供的第一控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;
控制设备还包括一个或多个如图4-图14所示实施例提供的第二控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;
第一控制器与第二控制器之间进行交互;
当控制设备包含多个控制器时,多个第一控制器之间、多个第二控制器之间可以通过特定的结构进行连接并传输数据;
其中,多个第一控制器和多个第二控制器,分别通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个第一控制器和多个第二控制器共享同一控制系统或拥有各自的控制系统;多个第一控制器和多个第二控制器共享内存单元或者拥有各自的内存单元。
多个控制器的互联方式是任意互联拓扑。该控制设备具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
一个示例中,上述内存单元位于控制设备中。
图49为本申请实施例提供的又一种组合处理装置的示意图,如图49所示,组合处理装置包括如图48提供的控制设备,通用互联接口和其他处理装置。
控制设备与其他处理装置进行交互,共同完成用户指定的操作。
上述组合装置可以作为手机、机器人、无人机等智能设备的系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。
图50为本申请实施例提供的又一种处理芯片的示意图一,如图50所示,处理芯片包括如图48提供的控制设备。
一个示例中,处理芯片中包括至少一个控制设备。
图51为本申请实施例提供的又一种处理芯片的示意图二,如图51所示,处理芯片包括如图49提供的组合处理装置。
一个示例中,处理芯片中包括至少一个组合处理装置。
图52为本申请实施例提供的又一种处理芯片的示意图三,如图43所示,处理芯片包括如图48提供的控制设备或如图49提供的组合处理装置。
一个示例中,处理芯片中包括至少一个控制设备、以及至少一个组合处理装置。控制设备与组合处理装置之间可以进行数据交互,也可以不进行数据交互。
图53为本申请实施例提供的又一种板卡的示意图,如图53所示,板卡包括如图50-图52的处理芯片。
一个示例中,板卡中设置有至少一个处理芯片。
图54为本申请实施例提供的又一种电子装置的示意图一,图55为本申请实施例提供的又一种电子装置的示意图二,图56为本申请实施例提供的又一种电子装置的示意图三,如图54-图56所示,电子装置包括如图50-图52提供的处理芯片或者如图53提供的板卡。
其中,该电子装置包括:数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。
图57为本申请实施例提供的另一种控制设备的示意图,如图57所示,控制设备包括一个或多个如图15-图23所示实施例提供的控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;
当控制设备包含多个控制器时,多个控制器间可以通过特定的结构进行连接并传输数据;
其中,多个控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个控制器共享同一控制系统或拥有各自的控制系统;多个控制器共享内存单元或者拥有各自的内存单元。
多个控制器的互联方式是任意互联拓扑。该控制设备具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
一个示例中,上述内存单元位于控制设备中。
图58为本申请实施例提供的再一种组合处理装置的示意图,如图58所示,组合处理装置包括如图57提供的控制设备,通用互联接口和其他处理装置。
控制设备与其他处理装置进行交互,共同完成用户指定的操作。
上述组合装置可以作为手机、机器人、无人机等智能设备的系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。
图59为本申请实施例提供的再一种处理芯片的示意图一,如图59所示,处理芯片包括如图57提供的控制设备。
一个示例中,处理芯片中包括至少一个控制设备。
图60为本申请实施例提供的再一种处理芯片的示意图二,如图60所示,处理芯片包括如图58提供的组合处理装置。
一个示例中,处理芯片中包括至少一个组合处理装置。
图61为本申请实施例提供的再一种处理芯片的示意图三,如图61所示,处理芯片包括如图57提供的控制设备或如图58提供的组合处理装置。
一个示例中,处理芯片中包括至少一个控制设备、以及至少一个组合处理装置。控制设备与组合处理装置之间可以进行数据交互,也可以不进行数据交互。
图62为本申请实施例提供的再一种板卡的示意图,如图62所示,板卡包括如图59图61的处理芯片。
一个示例中,板卡中设置有至少一个处理芯片。
图63为本申请实施例提供的再一种电子装置的示意图一,图64为本申请实施例提供的再一种电子装置的示意图二,图65为本申请实施例提供的再一种电子装置的示意图三,如图64-图65所示,电子装置包括如图59图61提供的处理芯片或者如图62提供的板卡。
其中,该电子装置包括:数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在本申请中提及“实施例”,表示结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其他实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其他实施例相结合。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (37)

1.一种进程通讯方法,其特征在于,所述方法应用于第一控制器,所述第一控制器中运行有第一进程和第一组件;所述方法,包括:
获取第一进程发起的第一调取命令,其中,所述第一调取命令用于指示所述第一组件调用第一注册表函数,所述第一注册表函数为与第二进程相关的函数;
向第二控制器发送第一调用指令,其中,所述第一调用指令用于指示调用第一注册表函数,且所述第一调用指令用于指示与所述第二进程相关的第二组件获取所述第一注册表函数所对应的第一返回值,所述第二控制器中运行有所述第二进程和所述第二组件;
接收所述第二控制器发送的第一调用响应消息,其中,所述第一调用响应消息用于指示所述第一返回值,以使所述第一进程获取所述第一返回值。
2.根据权利要求1所述的方法,其特征在于,在所述获取第一进程发起的第一调取命令之前,还包括:
接收所述第二控制器发送的第一注册请求消息,其中,所述第一注册请求消息为所述第二控制器的所述第二进程通过所述第二组件所发起的,所述第一注册请求消息用于指示对所述第一注册表函数进行注册处理;
根据所述第一注册请求消息,对所述第一注册表函数进行注册处理。
3.根据权利要求2所述的方法,其特征在于,在根据所述第一注册请求消息,对所述第一注册表函数进行注册处理之后,还包括:
向所述第二控制器发送第一注册响应消息,其中,所述第一注册响应消息用于指示所述第一注册表函数注册成功,以使所述第二进程获取所述第一注册响应消息。
4.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
接收所述第二控制器发送的第二调用指令,其中,所述第二调用指令用于指示调用第二注册表函数,所述第二注册表函数为与所述第一进程相关的函数,所述第二调用指令为所述第二控制器获取到所述第二进程发起的第二调取命令之后发出的;
根据所述第二调用指令,获取所述第二注册表函数所对应的第二返回值,其中,所述第二返回值为所述第一进程所确定的;
向所述第二控制器发送第二调用响应消息,其中,所述第二调用响应消息用于指示所述第二返回值,以使所述第二进程获取所述第二返回值。
5.根据权利要求4所述的方法,其特征在于,在接收所述第二控制器发送的第二调用指令之前,还包括:
向所述第二控制器发送第二注册请求消息,其中,所述第二注册请求消息为所述第一进程所发起的,所述第二注册请求消息用于指示所述第二控制器的第二组件对所述第二注册表函数进行注册处理。
6.根据权利要求5所述的方法,其特征在于,在向所述第二控制器发送第二注册请求消息之后,还包括:
接收所述第二控制器发送的第二注册响应消息,其中,所述第二注册响应消息指示所述第二注册表函数注册成功,以使所述第一进程获取所述第二注册响应消息。
7.根据权利要求1所述的方法,其特征在于,在所述获取第一进程发起的第一调取命令之前,还包括:
获取所述第一进程发起的第一初始化命令,并且接收所述第二控制器发送的交互信息,其中,所述交互信息表征所述第二控制器的所述第二组件获取到所述第二进程发起的第二初始化命令;
向所述第二控制器发送第一能力信息,其中,所述第一能力信息为所述第一进程的能力信息,所述第一能力信息用于所述第二控制器对所述第一能力信息与第二能力信息进行匹配,所述第二能力信息为所述第二进程的能力信息。
8.根据权利要求7所述的方法,其特征在于,在向所述第二控制器发送第一能力信息之后,还包括:
接收所述第二控制器发送的初始化响应消息,其中,所述初始化响应消息表征所述第二控制器的第二组件对所述第一能力信息与所述第二能力信息的匹配成功。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法,还包括:
获取所述第一进程发起的反初始化命令;
向所述第二控制器发送结束指令,其中,所述结束指令用于指示所述第二控制器的所述第二组件结束所述第一进程与所述第二进程之间的调用关系。
10.根据权利要求9所述的方法,其特征在于,在向所述第二控制器发送结束指令之后,还包括:
接收所述第二控制器发送的反初始化响应消息,其中,所述反初始化响应消息用于指示已经结束所述第一进程与所述第二进程之间的调用关系,以使所述第一进程获取所述反初始化响应消息。
11.一种进程通讯方法,其特征在于,所述方法应用于第二控制器,所述第二控制器中运行有第二进程和第二组件;所述方法,包括:
接收第一控制器发送的第一调用指令,其中,所述第一调用指令用于指示所述第二组件调用第一注册表函数,所述第一注册表函数为与所述第二进程相关的函数,所述第一控制器中运行有第一进程和第一组件,所述第一调用指令为所述第一控制器获取到所述第一进程发起的第一调取命令之后发出的;
根据所述第一调用指令,获取所述第一注册表函数所对应的第一返回值,其中,所述第一返回值为所述第二进程所确定的;
向所述第一控制器发送第一调用响应消息,其中,所述第一调用响应消息用于指示所述第一返回值,以使所述第一进程通过所述第一组件获取所述第一返回值。
12.根据权利要求11所述的方法,其特征在于,在接收所述第一控制器发送的第一调用指令之前,还包括:
向所述第一控制器发送第一注册请求消息,其中,所述第一注册请求消息为所述第二进程所发起的,所述第一注册请求消息用于指示所述第一控制器的第一组件对所述第一注册表函数进行注册处理。
13.根据权利要求12所述的方法,其特征在于,在向所述第一控制器发送第一注册请求消息之后,还包括:
接收所述第一控制器发送的第一注册响应消息,其中,所述第一注册响应消息指示所述第一注册表函数注册成功,以使所述第二进程获取所述第一注册响应消息。
14.根据权利要求11-13任一项所述的方法,其特征在于,在接收所述第一控制器发送的第一调用指令之前,还包括:
获取所述第二进程发起的第二初始化命令,并向所述第一控制器发送交互信息;
接收所述第一控制器发送的第一能力信息,其中,所述第一能力信息为所述第一进程的能力信息,所述第一能力信息为所述第一控制器在获取到所述第一进程发起的第一初始化命令之后发出的;
对所述第一能力信息与第二能力信息进行匹配,其中,所述第二能力信息为所述第二进程的能力信息。
15.一种进程通讯方法,其特征在于,所述方法应用于控制器,所述控制器中运行有第一进程、第一组件、第二进程和第二组件;所述方法,包括:
所述第一组件向所述第二组件发送第一调用指令,其中,所述第一调用指令用于指示所述第二组件调用第一注册表函数,所述第一注册表函数为与所述第二进程相关的函数,所述第一调用指令为所述第一组件获取到所述第一进程发起的第一调取命令之后发出的;
所述第二组件向所述第二进程发送第二调取命令,其中,所述第二调取命令用于指示所述第二进程确定所述第一注册表函数所对应的第一返回值;
所述第二组件向所述第一组件发送第一调用响应消息,其中,所述第一调用响应消息用于指示所述第一返回值,所述第一调用响应消息为所述第二组件接收到所述第二进程返回的所述第一返回值之后发出的;
所述第一组件向所述第一进程反馈所述第一返回值。
16.根据权利要求15所述的方法,其特征在于,在所述第一组件向所述第二组件发送第一调用指令之前,还包括:
所述第二组件向所述第一组件发送第一注册请求,其中,所述第一注册请求为所述第二进程所发起的,第一注册请求消息用于指示对所述第一注册表函数进行注册处理;
所述第一组件根据所述第一注册请求,对所述第一注册表函数进行注册处理。
17.根据权利要求16所述的方法,其特征在于,在所述第一组件根据所述第一注册请求,对所述第一注册表函数进行注册处理之后,还包括:
所述第一组件向所述第二组件发送第一注册响应消息,其中,所述第一注册响应消息用于指示所述第一注册表函数注册成功;
所述第二组件向所述第二进程发送所述第一注册响应消息。
18.根据权利要求15所述的方法,其特征在于,所述方法,还包括:
所述第二组件向所述第一组件发送第二调用指令,其中,所述第二调用指令用于指示所述第一组件调用第二注册表函数,所述二注册表函数为与所述第一进程相关的函数,所述第二调用指令为所述第二组件获取到所述第二进程发起的第三调取命令之后发出的;
所述第一组件向所述第一进程发送第四调取命令,其中,所述第四调取命令用于指示所述第一进程确定所述第二注册表函数所对应的第二返回值;
所述第一组件向所述第二组件发送第二调用响应消息,其中,所述第二调用响应消息用于指示所述第二返回值,所述第二调用响应消息为所述第一组件接收到所述第一进程返回的所述第二返回值之后发出的;
所述第二组件向所述第二进程反馈所述第二返回值。
19.根据权利要求18所述的方法,其特征在于,在所述第二组件向所述第一组件发送第二调用指令之前,还包括:
所述第一组件向所述第二组件发送第二注册请求,其中,所述第二注册请求为所述第一进程所发起的,第二注册请求消息用于指示对所述第二注册表函数进行注册处理;
所述第二组件根据所述第二注册请求,对所述第二注册表函数进行注册处理。
20.根据权利要求19所述的方法,其特征在于,在所述第二组件根据所述第二注册请求,对所述第二注册表函数进行注册处理之后,还包括:
所述第二组件向所述第一组件发送第二注册响应消息,其中,所述第二注册响应消息用于指示所述第二注册表函数注册成功;
所述第一组件向所述第一进程发送所述第二注册响应消息。
21.根据权利要求15所述的方法,其特征在于,在所述第一组件向所述第二组件发送第一调用指令之前,还包括:
所述第一组件获取所述第一进程发起的第一初始化命令,并且所述第二组件获取所述第二进程发起的第二初始化命令;
所述第二组件向所述第一组件发送交互信息;
所述第一组件根据所述交互信息,向所述第二组件发送第一能力信息,其中,所述第一能力信息为所述第一进程的能力信息;
所述第二组件对所述第一能力信息与第二能力信息进行匹配,其中,所述第二能力信息为所述第二进程的能力信息。
22.根据权利要求21所述的方法,其特征在于,在所述第二组件对所述第一能力信息与第二能力信息进行匹配之后,还包括:
所述第二组件向所述第一组件发送的初始化响应消息,其中,所述初始化响应消息表征所述第二组件对所述第一能力信息与所述第二能力信息的匹配成功。
23.根据权利要求15-22任一项所述的方法,其特征在于,所述方法,还包括:
所述第一组件获取所述第一进程发起的反初始化命令;
所述第一组件向所述第二组件发送结束指令,其中,所述结束指令用于指示所述第二组件结束所述第一进程与所述第二进程之间的调用关系;
所述第二组件根据所述结束指令,对所述第一进程与所述第二进程之间的调用关系进行处理。
24.根据权利要求23所述的方法,其特征在于,在所述第二组件根据所述结束指令,对所述第一进程与所述第二进程之间的调用关系进行处理之后,还包括:
所述第二组件向所述第一组件和所述第二进程发送反初始化响应消息,其中,所述反初始化响应消息用于指示已经结束所述第一进程与所述第二进程之间的调用关系;
所述第一组件向所述第一进程发送所述反初始化响应消息。
25.根据权利要求15-22任一项所述的方法,其特征在于,所述方法,还包括:
所述第二组件向所述第一组件发送心跳指令;
所述第一组件向所述第二组件发送心跳响应消息。
26.一种第一控制器,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行权利要求1-10任一项所述的进程通讯方法。
27.一种第二控制器,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行权利要求11-14任一项所述的进程通讯方法。
28.一种控制器,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行权利要求15-25任一项所述的进程通讯方法。
29.一种第一控制设备,其特征在于,所述第一控制设备包括一个或多个如权利要求26所述的第一控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;
当所述第一控制设备包含多个所述第一控制器时,所述多个所述第一控制器之间可以通过特定的结构进行连接并传输数据;
其中,多个所述第一控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述第一控制器共享同一控制系统或拥有各自的控制系统;多个所述第一控制器共享内存单元或者拥有各自的内存单元。
30.一种组合处理装置,其特征在于,包括如权利要求29所述的第一控制设备,通用互联接口和其他处理装置;
所述第一控制设备与所述其他处理装置进行交互,共同完成用户指定的操作。
31.一种处理芯片,其特征在于,所述处理芯片包括如权利要求29所述的第一控制设备或如权利要求30所述的组合处理装置。
32.一种第二控制设备,其特征在于,所述第二控制设备包括一个或多个如权利要求27所述的第二控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;
当所述第二控制设备包含多个所述第二控制器时,所述多个所述第二控制器之间可以通过特定的结构进行连接并传输数据;
其中,多个所述第二控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述第二控制器共享同一控制系统或拥有各自的控制系统;多个所述第二控制器共享内存单元或者拥有各自的内存单元。
33.一种组合处理装置,其特征在于,包括如权利要求32所述的第二控制设备,通用互联接口和其他处理装置;
所述第二控制设备与所述其他处理装置进行交互,共同完成用户指定的操作。
34.一种处理芯片,其特征在于,所述处理芯片包括如权利要求32所述的第二控制设备或如权利要求33所述的组合处理装置。
35.一种控制设备,其特征在于,所述控制设备包括一个或多个如权利要求28所述的控制器,用于执行指定的处理运算,将执行结果通过I/O接口传递给其他处理装置;
当所述控制设备包含多个所述控制器时,所述多个所述控制器之间可以通过特定的结构进行连接并传输数据;
其中,多个所述控制器通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述控制器共享同一控制系统或拥有各自的控制系统;多个所述控制器共享内存单元或者拥有各自的内存单元。
36.一种组合处理装置,其特征在于,包括如权利要求35所述的控制设备,通用互联接口和其他处理装置;
所述控制设备与所述其他处理装置进行交互,共同完成用户指定的操作。
37.一种处理芯片,其特征在于,所述处理芯片包括如权利要求35所述的控制设备或如权利要求36所述的组合处理装置。
CN201911359050.8A 2019-12-25 进程通讯方法及相关产品 Active CN113032161B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911359050.8A CN113032161B (zh) 2019-12-25 进程通讯方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911359050.8A CN113032161B (zh) 2019-12-25 进程通讯方法及相关产品

Publications (2)

Publication Number Publication Date
CN113032161A true CN113032161A (zh) 2021-06-25
CN113032161B CN113032161B (zh) 2024-06-04

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050229189A1 (en) * 2001-10-22 2005-10-13 Mcmanus Eamonn Inter-process communication using different programming languages
CN102833080A (zh) * 2011-06-15 2012-12-19 康佳集团股份有限公司 一种应用软件的进程间通信方法和系统
CN104809028A (zh) * 2015-05-07 2015-07-29 厦门雅迅网络股份有限公司 一种本地多进程间数据订阅推送的方法
CN106293955A (zh) * 2015-05-19 2017-01-04 中国石油化工股份有限公司 一种应用进程间的通信方法
CN109740345A (zh) * 2018-12-26 2019-05-10 北京神州绿盟信息安全科技股份有限公司 一种监控进程的方法及装置
CN109933443A (zh) * 2019-03-07 2019-06-25 腾讯科技(深圳)有限公司 进程间通信方法、装置、计算机设备及可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050229189A1 (en) * 2001-10-22 2005-10-13 Mcmanus Eamonn Inter-process communication using different programming languages
CN102833080A (zh) * 2011-06-15 2012-12-19 康佳集团股份有限公司 一种应用软件的进程间通信方法和系统
CN104809028A (zh) * 2015-05-07 2015-07-29 厦门雅迅网络股份有限公司 一种本地多进程间数据订阅推送的方法
CN106293955A (zh) * 2015-05-19 2017-01-04 中国石油化工股份有限公司 一种应用进程间的通信方法
CN109740345A (zh) * 2018-12-26 2019-05-10 北京神州绿盟信息安全科技股份有限公司 一种监控进程的方法及装置
CN109933443A (zh) * 2019-03-07 2019-06-25 腾讯科技(深圳)有限公司 进程间通信方法、装置、计算机设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN110096310B (zh) 运算方法、装置、计算机设备和存储介质
CN109062842B (zh) 一种遥控器与移动终端的通信方法、装置和遥控器
CN110119807B (zh) 运算方法、装置、计算机设备和存储介质
CN105527881A (zh) 一种指令处理方法及装置
CN110147249A (zh) 一种网络模型的计算方法及装置
CN111782133A (zh) 数据处理方法及装置以及相关产品
CN109726800B (zh) 运算方法、装置及相关产品
CN113032161A (zh) 进程通讯方法及相关产品
CN113032161B (zh) 进程通讯方法及相关产品
CN111767995A (zh) 运算方法、装置及相关产品
CN109711540A (zh) 一种计算装置及板卡
CN111079909B (zh) 运算方法、系统及相关产品
CN113246145B (zh) 核工业抓取设备的位姿补偿方法、系统和电子装置
CN111340202B (zh) 运算方法、装置及相关产品
US20220358055A1 (en) Method and apparatus for acquiring device information, storage medium and electronic device
CN109696910A (zh) 一种舵机运动控制方法及装置、计算机可读存储介质
CN114281558A (zh) 多核处理器、用于多核处理器的方法及相应产品
CN114443137A (zh) 一种集成计算装置、芯片、板卡、设备和计算方法
CN112988368A (zh) 进程处理方法及相关产品
CN111078291A (zh) 运算方法、系统及相关产品
CN112988636A (zh) 用于数据加速处理的系统、板卡和电子设备
CN111275197B (zh) 运算方法、装置、计算机设备和存储介质
CN111078280B (zh) 运算方法、装置及相关产品
CN111124497B (zh) 运算方法、装置、计算机设备和存储介质
CN111079914B (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