CN111352743B - 一种进程通讯方法和装置 - Google Patents
一种进程通讯方法和装置 Download PDFInfo
- Publication number
- CN111352743B CN111352743B CN201811580765.1A CN201811580765A CN111352743B CN 111352743 B CN111352743 B CN 111352743B CN 201811580765 A CN201811580765 A CN 201811580765A CN 111352743 B CN111352743 B CN 111352743B
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 282
- 230000008569 process Effects 0.000 title claims abstract description 252
- 238000004891 communication Methods 0.000 title claims abstract description 55
- 238000012544 monitoring process Methods 0.000 claims abstract description 79
- 238000012545 processing Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 12
- 230000002159 abnormal effect Effects 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message 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 (6)
1.一种进程通讯方法,其特征在于,包括:
初始化进程通信的消息通道,所述消息通道包括由第一进程、第二进程和共享内存共同组成的通道;
监听所述消息通道;
在所述第一进程或所述第二进程的发送线程接收到来自发送端的消息时,由所述发送线程将所述消息写入所述共享内存,触发对方进程从所述共享内存中读所述消息并执行,实现所述第一进程与所述第二进程之间的消息收发,其中所述发送端为运行第一进程或第二进程的终端;
所述初始化进程通信的消息通道,包括:
创建第一进程,启动所述第一进程的主线程创建第一监听线程;利用所述第一监听线程初始化共享内存、信号量和第一消息接收队列,并创建第二进程,在创建所述第二进程后所述第一监听线程处于等待状态;启动所述第二进程的主线程异步调用初始化,以创建所述第二进程的第二监听线程和第二消息接收队列,利用所述第二监听线程通知所述第一监听线程初始化完成,以使所述第一监听线程解除等待状态,完成所述消息通道的初始化构建;
所述在所述第一进程或所述第二进程的发送线程接收到来自发送端的消息时,由所述发送线程将所述消息写入所述共享内存,触发对方进程从所述共享内存中读所述消息并执行,实现所述第一进程与所述第二进程之间的消息收发,包括:
在所述第一消息接收队列写入消息时,所述第一进程创建第一发送线程,所述第一发送线程获取所述信号量并接收所述第一消息接收队列的所述消息,对所述消息进行数据拼接,将拼接后的数据写入所述共享内存中,在所述数据写入共享内存中后,所述第一发送线程释放所述信号量等待接收消息;在第二监听线程监听到所述第一发送线程释放所述信号量时,第二监听线程从所述共享内存读所述数据,并触发预先注册的函数执行所述数据;
在所述第二消息接收队列写入消息时,所述第二进程创建第二发送线程,所述第二发送线程获取所述信号量并接收所述第二消息接收队列的所述消息,对所述消息进行数据拼接,将拼接后的数据写入所述共享内存中,在所述数据写入共享内存中后,所述第二发送线程释放所述信号量等待接收消息;在第一监听线程监听到所述第二发送线程释放所述信号量时,第一监听线程从所述共享内存读所述数据,并触发预先注册的函数执行所述数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在第二监听线程监听到由所述第一进程发出的退出消息时,所述第二进程执行进程退出,在所述第二进程退出之后,所述第一进程执行进程退出。
3.根据权利要求2所述的方法,其特征在于,所述初始化进程通信的消息通道,还包括:
利用所述第一监听线程初始化全局锁并将所述全局锁锁定;
利用所述第一监听线程创建第一线程,利用所述第二监听线程创建第二线程,所述第一线程与所述第二线程用于监听所属进程的异常退出,在所属进程异常退出时,解除所述全局锁的锁定,以及在所述全局锁的锁定被解除时,通知异常退出的线程。
4.一种进程通讯装置,其特征在于,包括:
初始化单元,用于初始化进程通信的消息通道,所述消息通道为第一进程、第二进程和共享内存共同组成的消息通道;
监听单元,用于监听所述消息通道;
通信单元,用于在所述第一进程或所述第二进程的发送线程接收到来自发送端的消息时,由所述发送线程将所述消息写入所述共享内存,触发对方进程从所述共享内存中读所述消息并执行,实现所述第一进程与所述第二进程之间的消息收发,其中所述发送端为运行第一进程或第二进程的终端;
所述初始化单元,用于创建第一进程,启动所述第一进程的主线程创建第一监听线程;利用所述第一监听线程初始化共享内存、信号量和第一消息接收队列,并创建第二进程,在创建所述第二进程后所述第一监听线程处于等待状态;以及启动所述第二进程的主线程异步调用初始化,以创建所述第二进程的第二监听线程和第二消息接收队列,利用所述第二监听线程通知所述第一监听线程初始化完成,以使所述第一监听线程解除等待状态,完成所述消息通道的初始化构建;
所述通信单元,用于在所述第一消息接收队列写入消息时,所述第一进程创建第一发送线程,所述第一发送线程获取所述信号量并接收所述第一消息接收队列的所述消息,对所述消息进行数据拼接,将拼接后的数据写入所述共享内存中,在所述数据写入共享内存中后,所述第一发送线程释放所述信号量等待接收消息;在第二监听线程监听到所述第一发送线程释放所述信号量时,第二监听线程从所述共享内存读所述数据,并触发预先注册的函数执行所述数据;以及在所述第二消息接收队列写入消息时,所述第二进程创建第二发送线程,所述第二发送线程获取所述信号量并接收所述第二消息接收队列的所述消息,对所述消息进行数据拼接,将拼接后的数据写入所述共享内存中,在所述数据写入共享内存中后,所述第二发送线程释放所述信号量等待接收消息;在第一监听线程监听到所述第二发送线程释放所述信号量时,第一监听线程从所述共享内存读所述数据,并触发预先注册的函数执行所述数据。
5.根据权利要求4所述的装置,其特征在于,还包括处理单元;
所述处理单元,用于在第二监听线程监听到由所述第一进程发出的退出消息时,所述第二进程执行进程退出,在所述第二进程退出之后,所述第一进程执行进程退出。
6.根据权利要求4所述的装置,其特征在于,
所述初始化单元,还用于利用所述第一监听线程初始化全局锁并将所述全局锁锁定;利用所述第一监听线程创建第一线程,利用所述第二监听线程创建第二线程,所述第一线程与所述第二线程用于监听所属进程的异常退出,在所属进程异常退出时,解除所述全局锁的锁定,以及在所述全局锁的锁定被解除时,通知异常退出的线程。
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 CN111352743A (zh) | 2020-06-30 |
CN111352743B true 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608853B (zh) * | 2021-08-06 | 2023-11-10 | 安徽创新软件集团有限公司 | 一种基于物联网技术的多线程数据采集系统 |
CN114911632B (zh) * | 2022-07-11 | 2022-09-13 | 北京融为科技有限公司 | 一种进程间通信的控制方法和系统 |
CN115840654B (zh) * | 2023-01-30 | 2023-05-12 | 北京万里红科技有限公司 | 消息的处理方法、系统、计算设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176854A (zh) * | 2011-12-26 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种进程间通信方法、装置及系统 |
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 | 腾讯科技(深圳)有限公司 | 一种服务器的数据处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495325B2 (en) * | 2013-12-30 | 2016-11-15 | International Business Machines Corporation | Remote direct memory access (RDMA) high performance producer-consumer message processing |
-
2018
- 2018-12-24 CN CN201811580765.1A patent/CN111352743B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176854A (zh) * | 2011-12-26 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种进程间通信方法、装置及系统 |
CN104838361B (zh) * | 2013-12-03 | 2018-06-15 | 华为技术有限公司 | 一种核间进程通信的方法、装置及系统 |
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 | 山东浪潮商用系统有限公司 | 一种基于共享内存的进程间功能调用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111352743A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352743B (zh) | 一种进程通讯方法和装置 | |
KR101255382B1 (ko) | 운영체제에 친숙한 부트로더 | |
JP2587141B2 (ja) | 共用知能メモリを介して結合された複数のプロセッサ間でメッセージを伝達するための機構 | |
CN102567111B (zh) | 一种异步过程调用的方法、系统和终端设备 | |
US20060101472A1 (en) | Software development kit for client server applications | |
US20110239219A1 (en) | Protecting shared resources using shared memory and sockets | |
CN107688502B (zh) | 进程间通信方法及装置 | |
US20160352665A1 (en) | Tracking object across processes | |
CN103827829A (zh) | 在中间件机器环境中提供和管理用于多节点应用的消息队列的系统及方法 | |
JP2009265963A (ja) | 情報処理システム及びタスクの実行制御方法 | |
CN102541661B (zh) | 实现等待地址同步接口的方法和设备 | |
CN101025698A (zh) | 强制性地终止输入/输出操作阻止的线程的设备和方法 | |
EP2947568A1 (en) | Upgrade processing method, apparatus and system | |
US6378004B1 (en) | Method of communicating asynchronous elements from a mini-port driver | |
US20120222051A1 (en) | Shared resource access verification | |
CN109831394B (zh) | 数据处理方法、终端以及计算机存储介质 | |
CN114697194B (zh) | 阻塞式事件通知方法及装置 | |
CN111274047A (zh) | 信息处理方法、终端、系统、计算机设备和存储介质 | |
EP0408315A2 (en) | System for detecting loss of message | |
CN111522764B (zh) | 插拔操作的处理方法、终端及存储介质 | |
CN102662739B (zh) | 实现函数调用的方法和装置 | |
JP2006331213A (ja) | システムリソース管理装置、システムリソース管理方法及びプログラム | |
CN116743524A (zh) | 一种用于传输数据的方法及系统、主模块 | |
CN110471779B (zh) | 用于实现锁资源处理的方法和装置 | |
CN115994014A (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 | ||
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. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |