CN111352743A - 一种进程通讯方法和装置 - Google Patents

一种进程通讯方法和装置 Download PDF

Info

Publication number
CN111352743A
CN111352743A CN201811580765.1A CN201811580765A CN111352743A CN 111352743 A CN111352743 A CN 111352743A CN 201811580765 A CN201811580765 A CN 201811580765A CN 111352743 A CN111352743 A CN 111352743A
Authority
CN
China
Prior art keywords
message
thread
sending
shared memory
monitoring
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
CN201811580765.1A
Other languages
English (en)
Other versions
CN111352743B (zh
Inventor
韩子双
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Feinno Communication Technology Co Ltd
Original Assignee
Beijing Feinno Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Feinno Communication Technology Co Ltd filed Critical Beijing Feinno Communication Technology Co Ltd
Priority to CN201811580765.1A priority Critical patent/CN111352743B/zh
Publication of CN111352743A publication Critical patent/CN111352743A/zh
Application granted granted Critical
Publication of CN111352743B publication Critical patent/CN111352743B/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/544Buffers; Shared memory; Pipes
    • 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)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种进程通讯方法和装置。本发明的进程通信装置包括初始化单元、监听单元和通信单元。本发明的进程通讯方法包括:初始化进程通信的消息通道,消息通道包括由第一进程、第二进程和共享内存共同组成的通道;监听消息通道;在第一进程或第二进程的发送线程接收到来自发送端的消息时,由发送线程将消息写入所述共享内存,触发对方进程从所述共享内存中读消息并执行,实现第一进程与所述第二进程之间的消息收发,其中发送端为运行第一进程或第二进程的终端。本发明通过异步的消息处理方式实现消息的分发,保证消息分发不会堵塞,无需用户花费大量人力维护消息的收发逻辑。

Description

一种进程通讯方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种进程通讯方法和装置。
背景技术
在多团队开发同一套软件时,团队间协作一般会封装库(动态库或静态库),或者使用简单的进程间通讯。
封装动态库的方式是:把自己团队的代码编译\打包成库供其他团队调用,同时需要提供该库的头文件、函数说明和对应的依赖环境。这种方式至少存在以下问题:
开发前需要制定严格的接口协议,并且需要双方都去遵守;当一方崩溃时,会导致整个软件崩溃;排查问题时需要双方都投入人力,并且需要频繁的交流才可以把问题解决。
进程间通讯方案:提供简单的传输协议,需要双方去维护消息的收发逻辑。这种方式至少存在以下问题:
调用机制过于简单,使用时需要二次开发;跨平台效果不好,在不同平台下,需要构建不同的等待机制;无法跨编程语言;进程间通讯效率差。
发明内容
本发明提供了一种进程通讯方法和装置,以至少部分解决上述问题。
本发明的一方面提供了一种进程通信方法,包括:初始化进程通信的消息通道,消息通道包括由第一进程、第二进程和共享内存共同组成的通道;监听消息通道;在第一进程或第二进程的发送线程接收到来自发送端的消息时,由发送线程将消息写入所述共享内存,触发对方进程从所述共享内存中读消息并执行,实现第一进程与所述第二进程之间的消息收发,其中发送端为运行第一进程或第二进程的终端。
本发明的另一方面提供了一种进程通信装置,包括:初始化单元,用于初始化进程通信的消息通道,消息通道为第一进程、第二进程和共享内存共同组成的消息通道;监听单元,用于监听消息通道;通信单元,用于在第一进程或第二进程的发送线程接收到来自发送端的消息时,由发送线程将所述消息写入共享内存,触发对方进程从所述共享内存中读消息并执行,实现第一进程与第二进程之间的消息收发,其中发送端为运行第一进程或第二进程的终端。
本发明创建相互独立的第一进程和第二进程,利用第一进程、第二进程和共享内存构建消息通道并对消息通道进行监听,在消息收发过程中不区分主从逻辑,利用发送线程接收到来自发送端的消息并将接收到的消息写入共享内存,触发对方进程从共享内存中读消息并执行,通过异步的消息处理方式实现消息的分发,保证消息分发不会堵塞,无需用户花费大量人力维护消息的收发逻辑。
附图说明
图1为本发明实施例示出的进程通讯方法流程图;
图2为本发明实施例示出的消息通道初始化流程图;
图3为本发明实施例示出的消息分发流程图;
图4为本发明实施例示出的进程退出流程图;
图5为本发明实施例示出的进程通讯装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本发明的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本发明的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本发明的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
在多团队开发同一套软件时,不论是技术栈、开发环境还是后期的调试都会产生巨大的人力成本。本申请实施例针对这种问题,采取多进程通讯的方式为双方提供一套易用的接口,可以不需要考虑双方技术栈的冲突、开发环境的冲突,通过相互独立的进程可以方便相互之间同步版本及后期问题的排查。
本发明实施例提供一种进程通信方法。
图1为本发明实施例示出的进程通信方法的流程图,如图1所示,本实施例的方法包括:
S110,初始化进程通信的消息通道,消息通道包括由第一进程、第二进程和共享内存共同组成的通道。
S120,监听消息通道。
S130,在第一进程或第二进程的发送线程接收到来自发送端的消息时,由发送线程将消息写入共享内存,触发对方进程从共享内存中读消息并执行,实现第一进程与第二进程之间的消息收发,其中发送端为运行第一进程或第二进程的终端。
本实施例创建相互独立的第一进程和第二进程,利用第一进程、第二进程和共享内存构建消息通道并对消息通道进行监听,在消息收发过程中不区分主从逻辑,利用发送线程接收到来自发送端的消息并将接收到的消息写入共享内存,触发对方进程从共享内存读消息并执行,通过异步的消息处理方式实现消息的分发,保证消息分发不会堵塞,无需用户花费大量人力维护消息的收发逻辑。
以下参考图2-4对上述步骤S110-S130进行详细的说明。
首先执行步骤S110,即初始化进程通信的消息通道,消息通道包括由第一进程、第二进程和共享内存共同组成的通道。
本实施例可以通过下述方法初始化消息通道:首先创建第一进程,启动第一进程的主线程创建第一监听线程;接着利用第一监听线程初始化共享内存、信号量和第一消息接收队列,并创建第二进程,在创建第二进程后第一监听线程处于等待状态;然后启动第二进程的主线程异步调用初始化,以创建第二进程的第二监听线程和第二消息接收队列,利用第二监听线程通知第一监听线程初始化完成,以使第一监听线程解除等待状态,完成消息通道的初始化构建。
如图2所示,第一进程作为进程通信的发起者,第一进程的主线程首先创建第一监听线程用于整个进程间通讯的工作。第一监听线程首先需要初始化共享内存、信号量和第一消息接收队列,接着创建第二进程,第二进程的主线程在启动之后异步调用初始化,第二进程的初始化在其主线程中进行,当初始化完成,解除第一进程的第一监听线程的等待,双方的消息通道建立完毕,这时可以正常的收发消息。
在初始化进程通信的消息通道之后,继续执行步骤S120,即监听消息通道。
本实施例利用第一进程的第一监听线程以及利用第二进程的第二监听线程对消息通道进行监听。
假设第一进程运行在第一终端上,第二进程运行在第二终端上,当用户(发送者)在第一终端向消息通道中的第一消息接收队列发送消息时,第一监听线程会监听到消息,触发第一进程的主线程构建第一发送线程,利用第一发送线程接收第一消息接收队列中的消息并写入到共享内存中。同样的,当发送者在第二终端向消息通道中的第二消息接收队列发送消息时,第二监听线程会监听到消息,触发第二进程的主线程构建第二发送线程,利用第二发送线程接收第二消息接收队列中的消息并写入到共享内存中。
在第一进程或第二进程的发送线程接收到来自发送端的消息时,继续执行步骤S130,即由发送线程将消息写入共享内存,触发对方进程从共享内存中读消息并执行,实现第一进程与第二进程之间的消息收发,其中发送端为运行第一进程或第二进程的终端。
在消息发送过程中,消息通道没有主从逻辑,因为第一进程与第二进程都有自己的接收列队,因此第一进程与第二进程可以双向互不干扰地发送消息。
如图3所示,针对第一进程与第二进程中的任一进程而言,发送者可以把待发送的消息加入消息发送队列,并由发送线程统一发送。
假设运行第一进程的终端为发送端,运行第二进程的终端为接收端,在发送者通过发送端向第一进程的第一消息接收队列写入消息时,第一进程创建第一发送线程,第一发送线程获取信号量并接收第一消息接收队列的消息,对消息进行数据拼接,将拼接后的数据写入共享内存中,在数据写入共享内存中后,第一发送线程释放信号量等待接收消息;在第二监听线程监听到第一发送线程释放信号量时,第二监听线程从共享内存读数据,并触发预先注册的函数执行所述数据。
同样的,假设运行第二进程的终端为发送端,运行第一进程的终端为接收端,在发送者通过发送端向第二进程的第二消息接收队列写入消息时,第二进程创建第二发送线程,第二发送线程获取信号量并接收第二消息接收队列的消息,对消息进行数据拼接,将拼接后的数据写入共享内存中,在数据写入共享内存中后,第二发送线程释放信号量等待接收消息;在第一监听线程监听到第二发送线程释放信号量时,第一监听线程从共享内存读数据,并触发预先注册的函数执行所述数据。
在一个实施例中,当第二监听线程监听到第一发送线程释放信号量,第二监听线程从共享内存读数据时,第二监听线程还获取其等待时间,在等待超时间超过预设超时时间时,第二监听线程检测同步锁,利用同步锁检测第二监听线程是否存在数据读取异常。同样的,当第一监听线程监听到第二发送线程释放信号量,第一监听线程从共享内存读数据时,第一监听线程还获取其等待时间,在等待超时间超过预设超时时间时,第一监听线程检测同步锁,利用同步锁检测第一监听线程是否存在数据读取异常。
基于在消息通道的初始化过程中,本实施例利用第一进程创建第二进程,因此本实施例在第二监听线程监听到由第一进程发出的退出消息时,第二进程执行进程退出,在第二进程退出之后,第一进程执行进程退出。可以理解的是,若在消息通道的初始化过程中,利用第二进程创建第一进程,则在进程通讯的退出逻辑中,若第一监听线程监听到由第二进程发出的退出消息时,第一进程先执行进程退出,在第一进程完全退出之后,第二进程再执行进程退出,以保证安全的释放内核对象。
如图4所示,第一进程和第二进程不区分主从关系,在第一进程的任意线程向第一线程发送携带唯一性标识的退出消息时,第二进程的第二监听线程会监听到该退出消息,第二进程会执行进程退出逻辑,当第二进程完全退出之后,第一进程再执行同样的进程退出逻辑。关于进程退出可以参考现有技术,本实施例在此不再赘述。
需要说明的是,本实施例还对进程通讯之间的异常退出情况进行监听,当双方有任一方出现异常退出时,使对方接收到的消息。
据此,本实施例在初始化进程通讯的消息通道时,还利用第一监听线程初始化全局锁并将全局锁锁定,利用第一监听线程创建第一线程,利用第二进程监听线程创建第二线程,第一线程与第二线程用于监听所属进程的异常退出,在所属进程异常退出时,解除全局锁的锁定,以及在全局锁的锁定被解除时,通知异常退出的线程。
例如,当第一进程出现异常退出时,第一进程的第一线程会监听到第一进程的异常退出并解除全局锁的锁定,第二进程的第二线程可以监听到全局锁被第一进程触发而解除锁定,向用户通知第一进程的异常退出。
本发明实施例通过利用共享内存、信号所等内核对象实现消息分发,通过进程间通讯的异步调用,来避免重复的消息封装及分发工作,且本发明实施例可以为不同平台、不同语言提供功能相同的模块,方便不同团队的合作开发,通过本发明实施例的进程间的通讯方法能够规避模块崩溃导致整个软件崩溃的情况。
与本发明进程通讯方法相对应的,本发明实施例还提供了一种进程通讯装置。
图5为本发明实施例示出的进程通讯装置的结构框图,如图5所示,本实施例的装置包括:
初始化单元51,用于初始化进程通信的消息通道,消息通道为第一进程、第二进程和共享内存共同组成的消息通道;
监听单元52,用于监听消息通道;
通信单元53,用于在第一进程或第二进程的发送线程接收到来自发送端的消息时,由发送线程将所述消息写入共享内存,触发对方进程从共享内存中读消息并执行,实现第一进程与第二进程之间的消息收发,其中发送端为运行第一进程或第二进程的终端。
在一个实施例中,初始化单元51用于创建第一进程,启动第一进程的主线程创建第一监听线程;利用第一监听线程初始化共享内存、信号量和第一消息接收队列,并创建第二进程,在创建第二进程后第一监听线程处于等待状态;以及启动第二进程的主线程异步调用初始化,以创建第二进程的第二监听线程和第二消息接收队列,利用第二监听线程通知第一监听线程初始化完成,以使第一监听线程解除等待状态,完成消息通道的初始化构建。
在一个实施例中,通信单元52用于在第一消息接收队列写入消息时,第一进程创建第一发送线程,第一发送线程获取所述信号量并接收第一消息接收队列的所述消息,对消息进行数据拼接,将拼接后的数据写入共享内存中,在数据写入共享内存中后,第一发送线程释放所述信号量等待接收消息;在第二监听线程监听到第一发送线程释放所述信号量时,第二监听线程从共享内存读数据,并触发预先注册的函数执行所述数据;以及在第二消息接收队列写入消息时,第二进程创建第二发送线程,第二发送线程获取所述信号量并接收第二消息接收队列的消息,对消息进行数据拼接,将拼接后的数据写入共享内存中,在数据写入共享内存中后,第二发送线程释放信号量等待接收消息;在第一监听线程监听到第二发送线程释放所述信号量时,第一监听线程从共享内存读所述数据,并触发预先注册的函数执行数据。
本实施例中的进程通讯装置还可以包括处理单元,用于在第二监听线程监听到由第一进程发出的退出消息时,第二进程执行进程退出,在第二进程退出之后,第一进程执行进程退出。
在一个实施例中,初始化单元51还用于利用第一监听线程初始化全局锁并将全局锁锁定;利用第一监听线程创建第一线程,利用第二进程监听线程创建第二线程,第一线程与第二线程用于监听所属进程的异常退出,在所属进程异常退出时,解除全局锁的锁定,以及在全局锁的锁定被解除时,通知异常退出的线程。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明提供的进程通讯装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,本发明提供的进程通讯装置可包括处理器、存储有机器可执行指令的机器可读存储介质。处理器与机器可读存储介质可经由系统总线通信。并且,通过读取并执行机器可读存储介质中与进程通讯逻辑对应的机器可执行指令,处理器可执行上文描述的进程通讯方法。
本发明中提到的机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、DVD等),或者类似的存储介质,或者它们的组合。
根据本发明公开的示例,本发明还提供了一种包括机器可执行指令的机器可读存储介质,机器可执行指令可由进程通讯装置中的处理器执行以实现上文描述的进程通讯方法。
为了便于清楚描述本发明实施例的技术方案,在发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种进程通讯方法,其特征在于,包括:
初始化进程通信的消息通道,所述消息通道包括由第一进程、第二进程和共享内存共同组成的通道;
监听所述消息通道;
在所述第一进程或所述第二进程的发送线程接收到来自发送端的消息时,由所述发送线程将所述消息写入所述共享内存,触发对方进程从所述共享内存中读所述消息并执行,实现所述第一进程与所述第二进程之间的消息收发,其中所述发送端为运行第一进程或第二进程的终端。
2.根据权利要求1所述的方法,其特征在于,所述初始化进程通信的消息通道,包括:
创建第一进程,启动所述第一进程的主线程创建第一监听线程;
利用所述第一监听线程初始化共享内存、信号量和第一消息接收队列,并创建第二进程,在创建所述第二进程后所述第一监听线程处于等待状态;
启动所述第二进程的主线程异步调用初始化,以创建所述第二进程的第二监听线程和第二消息接收队列,利用所述第二监听线程通知所述第一监听线程初始化完成,以使所述第一监听线程解除等待状态,完成所述消息通道的初始化构建。
3.根据权利要求2所述的方法,其特征在于,所述在监听到消息时,由监听到所述消息的进程将所述消息写入所述共享内存,触发对方进程从所述共享内存中读所述消息并执行,实现所述第一进程与所述第二进程之间的消息收发,包括:
在所述第一消息接收队列写入消息时,所述第一进程创建第一发送线程,所述第一发送线程获取所述信号量并接收所述第一消息接收队列的所述消息,对所述消息进行数据拼接,将拼接后的数据写入所述共享内存中,在所述数据写入共享内存中后,所述第一发送线程释放所述信号量等待接收消息;在第二监听线程监听到所述第一发送线程释放所述信号量时,第二监听线程从所述共享内存读所述数据,并触发预先注册的函数执行所述数据;
在所述第二消息接收队列写入消息时,所述第二进程创建第二发送线程,所述第二发送线程获取所述信号量并接收所述第二消息接收队列的所述消息,对所述消息进行数据拼接,将拼接后的数据写入所述共享内存中,在所述数据写入共享内存中后,所述第二发送线程释放所述信号量等待接收消息;在第一监听线程监听到所述第二发送线程释放所述信号量时,第一监听线程从所述共享内存读所述数据,并触发预先注册的函数执行所述数据。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在第二监听线程监听到由所述第一进程发出的退出消息时,所述第二进程执行进程退出,在所述第二进程退出之后,所述第一进程执行进程退出。
5.根据权利要求1所述的方法,其特征在于,所述初始化进程通信的消息通道,还包括:
利用所述第一监听线程初始化全局锁并将所述全局锁锁定;
利用所述第一监听线程创建第一线程,利用所述第二进程监听线程创建第二线程,所述第一线程与所述第二线程用于监听所属进程的异常退出,在所属进程异常退出时,解除所述全局锁的锁定,以及在所述全局锁的锁定被解除时,通知异常退出的线程。
6.一种进程通讯装置,其特征在于,包括:
初始化单元,用于初始化进程通信的消息通道,所述消息通道为第一进程、第二进程和共享内存共同组成的消息通道;
监听单元,用于监听所述消息通道;
通信单元,用于在所述第一进程或所述第二进程的发送线程接收到来自发送端的消息时,由所述发送线程将所述消息写入所述共享内存,触发对方进程从所述共享内存中读所述消息并执行,实现所述第一进程与所述第二进程之间的消息收发,其中所述发送端为运行第一进程或第二进程的终端。
7.根据权利要求6所述的装置,其特征在于,
所述初始化单元,用于创建第一进程,启动所述第一进程的主线程创建第一监听线程;利用所述第一监听线程初始化共享内存、信号量和第一消息接收队列,并创建第二进程,在创建所述第二进程后所述第一监听线程处于等待状态;以及启动所述第二进程的主线程异步调用初始化,以创建所述第二进程的第二监听线程和第二消息接收队列,利用所述第二监听线程通知所述第一监听线程初始化完成,以使所述第一监听线程解除等待状态,完成所述消息通道的初始化构建。
8.根据权利要求7所述的装置,其特征在于,
所述通信单元,用于在所述第一消息接收队列写入消息时,所述第一进程创建第一发送线程,所述第一发送线程获取所述信号量并接收所述第一消息接收队列的所述消息,对所述消息进行数据拼接,将拼接后的数据写入所述共享内存中,在所述数据写入共享内存中后,所述第一发送线程释放所述信号量等待接收消息;在第二监听线程监听到所述第一发送线程释放所述信号量时,第二监听线程从所述共享内存读所述数据,并触发预先注册的函数执行所述数据;以及在所述第二消息接收队列写入消息时,所述第二进程创建第二发送线程,所述第二发送线程获取所述信号量并接收所述第二消息接收队列的所述消息,对所述消息进行数据拼接,将拼接后的数据写入所述共享内存中,在所述数据写入共享内存中后,所述第二发送线程释放所述信号量等待接收消息;在第一监听线程监听到所述第二发送线程释放所述信号量时,第一监听线程从所述共享内存读所述数据,并触发预先注册的函数执行所述数据。
9.根据权利要求7所述的装置,其特征在于,还包括处理单元;
所述处理单元,用于在第二监听线程监听到由所述第一进程发出的退出消息时,所述第二进程执行进程退出,在所述第二进程退出之后,所述第一进程执行进程退出。
10.根据权利要求6所述的装置,其特征在于,
所述初始化单元,还用于利用所述第一监听线程初始化全局锁并将所述全局锁锁定;利用所述第一监听线程创建第一线程,利用所述第二进程监听线程创建第二线程,所述第一线程与所述第二线程用于监听所属进程的异常退出,在所属进程异常退出时,解除所述全局锁的锁定,以及在所述全局锁的锁定被解除时,通知异常退出的线程。
CN201811580765.1A 2018-12-24 2018-12-24 一种进程通讯方法和装置 Active CN111352743B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811580765.1A CN111352743B (zh) 2018-12-24 2018-12-24 一种进程通讯方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811580765.1A CN111352743B (zh) 2018-12-24 2018-12-24 一种进程通讯方法和装置

Publications (2)

Publication Number Publication Date
CN111352743A true CN111352743A (zh) 2020-06-30
CN111352743B CN111352743B (zh) 2023-12-01

Family

ID=71195454

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811580765.1A Active CN111352743B (zh) 2018-12-24 2018-12-24 一种进程通讯方法和装置

Country Status (1)

Country Link
CN (1) CN111352743B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608853A (zh) * 2021-08-06 2021-11-05 安徽创新软件集团有限公司 一种基于物联网技术的多线程数据采集系统
CN114911632A (zh) * 2022-07-11 2022-08-16 北京融为科技有限公司 一种进程间通信的控制方法和系统
CN115840654A (zh) * 2023-01-30 2023-03-24 北京万里红科技有限公司 消息的处理方法、系统、计算设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176854A (zh) * 2011-12-26 2013-06-26 腾讯科技(深圳)有限公司 一种进程间通信方法、装置及系统
US20150186330A1 (en) * 2013-12-30 2015-07-02 International Business Machines Corporation Remote direct memory access (rdma) high performance producer-consumer message processing
CN107085542A (zh) * 2017-05-05 2017-08-22 深圳慧昱教育科技有限公司 Ipc通信方法和服务器
CN107491355A (zh) * 2017-08-17 2017-12-19 山东浪潮商用系统有限公司 一种基于共享内存的进程间功能调用方法及装置
CN104838361B (zh) * 2013-12-03 2018-06-15 华为技术有限公司 一种核间进程通信的方法、装置及系统
CN108694083A (zh) * 2017-04-07 2018-10-23 腾讯科技(深圳)有限公司 一种服务器的数据处理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176854A (zh) * 2011-12-26 2013-06-26 腾讯科技(深圳)有限公司 一种进程间通信方法、装置及系统
CN104838361B (zh) * 2013-12-03 2018-06-15 华为技术有限公司 一种核间进程通信的方法、装置及系统
US20150186330A1 (en) * 2013-12-30 2015-07-02 International Business Machines Corporation Remote direct memory access (rdma) high performance producer-consumer message processing
CN108694083A (zh) * 2017-04-07 2018-10-23 腾讯科技(深圳)有限公司 一种服务器的数据处理方法和装置
CN107085542A (zh) * 2017-05-05 2017-08-22 深圳慧昱教育科技有限公司 Ipc通信方法和服务器
CN107491355A (zh) * 2017-08-17 2017-12-19 山东浪潮商用系统有限公司 一种基于共享内存的进程间功能调用方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608853A (zh) * 2021-08-06 2021-11-05 安徽创新软件集团有限公司 一种基于物联网技术的多线程数据采集系统
CN113608853B (zh) * 2021-08-06 2023-11-10 安徽创新软件集团有限公司 一种基于物联网技术的多线程数据采集系统
CN114911632A (zh) * 2022-07-11 2022-08-16 北京融为科技有限公司 一种进程间通信的控制方法和系统
CN114911632B (zh) * 2022-07-11 2022-09-13 北京融为科技有限公司 一种进程间通信的控制方法和系统
CN115840654A (zh) * 2023-01-30 2023-03-24 北京万里红科技有限公司 消息的处理方法、系统、计算设备及可读存储介质

Also Published As

Publication number Publication date
CN111352743B (zh) 2023-12-01

Similar Documents

Publication Publication Date Title
CN111352743B (zh) 一种进程通讯方法和装置
CN102567111B (zh) 一种异步过程调用的方法、系统和终端设备
US9733926B1 (en) Bridge to connect an extended development capability device to a target device
CN107688502B (zh) 进程间通信方法及装置
CN100511156C (zh) 强制性地终止输入/输出操作阻止的线程的设备和方法
EP2521340A1 (en) Resources allocation method and device for foreground switch of java 2 platform micro edition (j2me) application
US20180239657A1 (en) Symmetric bridge component for communications between kernel mode and user mode
US10146653B2 (en) Automated system-level failure and recovery
US10848595B2 (en) Method and device for message sending and receiving based on a communication interface framework
US20110239219A1 (en) Protecting shared resources using shared memory and sockets
CN109857489B (zh) 基于Android系统的开发系统、解耦方法和装置
US20120222051A1 (en) Shared resource access verification
CA2904253A1 (en) Computer system using in-service software upgrade
CN109597653A (zh) Bios与bmc命令交互的方法、bios及bmc
CN109831394B (zh) 数据处理方法、终端以及计算机存储介质
CN103856349A (zh) 多核路由器的版本升级处理方法及多核路由器
CN113791920A (zh) 双系统通信方法、装置、电子设备及计算机可读存储介质
JP6577901B2 (ja) 計算機システムおよびシステム状態再現方法
CN110825536B (zh) 嵌入式实时操作系统中任务间的通信方法及装置
CN110968147B (zh) 定时器创建的方法、装置、电子设备及介质
CN111274047A (zh) 信息处理方法、终端、系统、计算机设备和存储介质
KR20150104251A (ko) 항공기 시스템 및 그것의 제어 방법
JPH0341522A (ja) メッセージ紛失検出処理方式
CN111522764B (zh) 插拔操作的处理方法、终端及存储介质
CN108717384B (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
CB02 Change of applicant information

Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080

Applicant after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd.

Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602

Applicant before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant