CN103176854A - 一种进程间通信方法、装置及系统 - Google Patents

一种进程间通信方法、装置及系统 Download PDF

Info

Publication number
CN103176854A
CN103176854A CN2011104417674A CN201110441767A CN103176854A CN 103176854 A CN103176854 A CN 103176854A CN 2011104417674 A CN2011104417674 A CN 2011104417674A CN 201110441767 A CN201110441767 A CN 201110441767A CN 103176854 A CN103176854 A CN 103176854A
Authority
CN
China
Prior art keywords
shared drive
thread
sign
communication
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011104417674A
Other languages
English (en)
Other versions
CN103176854B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201110441767.4A priority Critical patent/CN103176854B/zh
Publication of CN103176854A publication Critical patent/CN103176854A/zh
Application granted granted Critical
Publication of CN103176854B publication Critical patent/CN103176854B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明适用于属于计算机技术领域,提供了一种进程间通信方法、装置及系统,包括:根据第一进程的标识及第二进程的标识创建第一共享内存和第二共享内存,所述标识用于唯一标识一个进程;通过第一共享内存和第二共享内存进行第一进程与第二进程之间的通信。本发明提供的进程间通信方法基于共享内存机制来实现,通过监听第一进程的连接请求,当有第一进程请求与第二进程进行通信连接时,根据通信双方的进程的标识来建立独立的共享内存以完成进程间的通信,实现进程间的通信连接的动态创建,高性能、高灵活性地实现了进程间通信。

Description

一种进程间通信方法、装置及系统
技术领域
本发明属于计算机技术领域,尤其涉及一种进程间通信(InterProcessCommunications,IPC)方法、装置及系统。
背景技术
进程是计算机资源分配的最小单位,每个进程都拥有自己的独立资源,并与其他进程相互隔离,为了使不同的进程能够互相访问资源并协调工作,操作系统提供了多种IPC机制,例如管道、共享内存、socket等。
在当前不断发展的计算机技术的背景之下,多个进程同时与一个主进程进行通信的情况频频涌现,例如采用了多进程、微内核的第三方应用平台,其承载着大量可能分布在各个进程的第三方应用和服务,在各应用与平台之间相互通信时,多个进程与主进程间的通信需求非常大,对IPC模块的性能和灵活性要求很高。
然而,在上述应用背景下,对现有技术来说,管道及共享内存机制通常仅适用于两个进程之间的简单通信,不支持多进程通信时连接通道的动态创建和销毁。Socket适用于跨机器进程间通信,但其在同机器的进程间通信的性能比共享内存机制低,不适用于大数据量的传输,且需要占用通信端口和socket连接,数据流容易被捕获。同时,现有技术在进程接收数据时,通常采用一个单独的线程将数据拷贝到本地缓冲区,这要求上层应用循环不断的从本地缓冲区中检查并读取数据,若进程间的数据传输不频繁,则上述循环动作也增加了不必要的CPU空转开销。因此,综上所述,在上述应用背景下,现有技术在处理进程间通信时存在着性能低及灵活性差的缺陷。
发明内容
本发明实施例的目的在于提供一种进程间通信方法,旨在解决现有技术在处理IPC时性能低及灵活性差的问题。
本发明实施例是这样实现的,一种进程间通信方法,包括:
根据第一进程的标识及第二进程的标识创建第一共享内存和第二共享内存,所述第一共享内存用于接收所述第一进程的发送数据以使所述第二进程能够从所述第一共享内存中读取该发送数据,所述第二共享内存用于接收所述第二进程的发送数据以使所述第一进程能够从所述第二共享内存中读取该发送数据,所述标识用于唯一标识一个进程;
通过所述第一共享内存和所述第二共享内存进行所述第一进程与所述第二进程之间的通信。
本发明实施例的另一目的在于提供一种进程间通信装置,包括:
共享内存建立模块,用于根据第一进程的标识及第二进程的标识创建第一共享内存和第二共享内存,所述第一共享内存用于接收所述第一进程的发送数据以使所述第二进程能够从所述第一共享内存中读取该发送数据,所述第二共享内存用于接收所述第二进程的发送数据以使所述第一进程能够从所述第二共享内存中读取该发送数据,所述标识用于唯一标识一个进程;
通信模块,用于通过所述第一共享内存和所述第二共享内存进行所述第一进程与所述第二进程之间的通信。
本发明实施例的另一目的在于提供一种进程间通信系统,所述系统包括如上所述的进程间通信装置。
本发明实施例的另一目的在于提供一种控件框架,包括一个主程序和至少一个控件,
所述主程序包括第一加载模块,用于将所述主程序加载进第二进程;
每个控件分别包括第二加载模块,用于将所述控件加载进第一进程;
还包括:
如上所述的进程间通信装置,用于完成所述第二进程与至少一个所述第一进程间的通信。
本发明实施例提供的进程间通信方法基于共享内存机制来实现,通过监听第一进程的连接请求,当有第一进程请求与第二进程进行通信连接时,根据通信双方的进程的标识来建立独立的共享内存以完成进程间的通信,实现进程间的通信连接的动态创建,高性能、高灵活性地实现了进程间通信。
附图说明
图1是本发明第一实施例提供的进程间通信方法的应用场景示意图;
图2是本发明第二实施例提供的进程间通信方法的实现流程图;
图3是本发明第三实施例提供的进程间通信方法的实现流程图;
图4是本发明第四实施例提供的进程间通信方法的实现流程图;
图5是本发明第五实施例提供的进程间通信装置的结构框图;
图6是本发明第六实施例提供的控件框架的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供的进程间通信方法基于共享内存机制来实现,通过监听第一进程的连接请求,当有第一进程请求与第二进程进行通信连接时,根据通信双方的进程的标识来建立独立的共享内存以完成进程间的通信,实现进程间的通信连接的动态创建,高性能、高灵活性地实现了进程间通信。
图1示出了本发明第一实施例提供的进程间通信方法的应用场景示意图,为了便于说明,仅示出了与本实施例相关的部分。
该进程间通信方法的应用场景包括但不限于windows、linux等操作系统或者分布式系统,其还可应用于第三方应用平台中,实现多个客户端进程同时与一个服务端进程之间的通信。以应用于第三方应用平台为例,在此应用场景下,主进程可以理解为承载了大量第三方应用和服务的平台本身,而多个与主进程进行通信的进程可以理解为第三方应用在运行时所涉及的进程。
如图1所示,本实施例及后续相关实施例均基于连接的客户端/服务器模式(C/S)来阐述,将多个进程同时与一个主进程之间进行通信的方式描述为多个第一进程11与第二进程12进行通信的方式。当实际操作仅涉及到两个进程之间的通信时,可以将相关实施例简化为一个第一进程11与一个第二进程12、或者两个第一进程11之间的通信。
图2示出了本发明第二实施例提供的进程间通信方法的实现流程,详述如下:
在步骤S201中,第二进程启动,监听是否有第一进程请求连接。
在本实施例中,第二进程作为可以同时与多个第一进程进行通信的主进程,其首先要打开监听(Listen)通道(即调用listen进程),用于监听是否有第一进程向其发起连接请求,在此,监听通道的打开也标示着该第二进程愿意与第一进程进行通信连接。
具体地,在第二进程启动时,将专门创建一个共享内存用于接收并处理其他第一进程的连接请求,例如,将0xFFFFFFFF保留为一个无效的进程标识,则该创建的共享内存可以命名为0x100A_0xFFFFFFFF,该进程在内部被listen进程使用,用于接收第一进程的连接请求,其中,0x100A为第二进程的标识。
作为本发明的一个实施例,在第二进程打开监听通道的时候,可以设置同时与第二进程进行通信的第一进程的数量上限,以使进程间通信连接情况符合当前系统运行状况。
作为本发明的另一个实施例,在第二进程打开监听通道的时候,也可以设置每个第一进程在与第二进程进行通信时所占用的共享内存大小上限,包括每个通信通道占用的共享内存大小上限及同时存在的通信通道所占用的共享内存总和的大小上限,以使进程间通信连接情况符合当前系统运行状况。
在步骤S202中,根据第一进程的标识及第二进程的标识创建第一共享内存和第二共享内存,所述第一共享内存用于接收所述第一进程的发送数据以使所述第二进程能够从所述第一共享内存中读取该发送数据,所述第二共享内存用于接收所述第二进程的发送数据以使所述第一进程能够从所述第二共享内存中读取该发送数据,所述标识用于唯一标识一个进程。
其中,创建的共享内存包括了第一进程向第二进程发送数据时所使用的第一共享内存及第二进程向第一进程发送数据时所使用的第二共享内存。
在本实施例中,为了实现多个第一进程与第二进程进行通信,需要保证单一进程的任何通信故障都不影响到其他进程的通信,因此,需要对每个通信通道都创建独立的共享内存。为了将每个通信通道使用的共享内存区别于其他共享内存,需要根据进程的标识(ProcessID)来命名相应的共享内存空间,其中,每个标识用于唯一标识一个进程。
例如,假设第二进程的标识为0x100A,某个第一进程的标识为0x100B,则根据上述标识,当第二进程与该第一进程进行通信时,可以命名第二进程的接收共享内存(即第一共享内存)为0x100A_0x100B,发送共享内存(即第二共享内存)为0x100B_0x100A,则相应的,该第一进程的接收共享内存对应第二进程的发送共享内存,为0x100B_0x100A,发送共享内存对应第二进程的接收共享内存,为0x100A_0x100B。通过进程标识来命名相应的共享内存,能够实现对进程间通信可靠性的保障。
具体地,在进行共享内存创建时,作为接收方的进程首先通过CreateFileMapping建立一个内存映射文件对象,若建立成功则通过MapViewOfFile将该文件映射对象的视图映射进地址空间,同时得到此映射视图的首地址,同样地,作为发送方的进程首先通过OpenFileMapping打开上述创建的内存映射文件对象,若打开成功则通过MapViewOfFile将此文件映射对象的视图映射进地址空间,同时得到此映射视图的首地址。上述接收方的建立过程及发送方的打开过程被称为一个共享内存的创建过程,在此过程中,收发双方均获取到了用于进行通信的共享内存地址,因此,在进行数据传送时,发送方的进程实际上是根据该首地址将数据写到创建的共享内存中;在进行数据接收时,接收方的进程实际上即是根据该首地址从创建的共享内存中读取数据。在本实施例中,根据上述过程创建出第一共享内存及第二共享内存,即可以建立起第一进程与第二进程的双向通信通道,完成数据的双向发送与接收。作为本实施例的一个具体实现方式,通过3次握手来完成第一共享内存及第二共享内存的创建,关于步骤S202的具体实施方式将在后续实施例中进行详细说明,在此不再赘述。
在步骤S203中,通过所述第一共享内存和所述第二共享内存进行所述第一进程与所述第二进程之间的通信。
在本实施例中,根据创建的第一共享内存及第二共享内存,即可以建立起第一进程与第二进程的双向通信通道,完成数据的双向发送与接收。
具体地,在本实施例中,系统内部通过建立两个线程(发送线程和接收线程)来分别发送和接收数据。发送线程用于发送数据,其在发送方进程有数据要发送时才激活,以通知接收方进程有数据需要接收;接收线程用于接收数据,当有数据需要接收时才被激活。在本实施例中,可以通过复用windows的message机制,采用hook系统函数GetMessage,可以将数据以自定义消息的形式推送到相应的接收线程,并使用回调函数处理。由于windows窗口程序都会有一个消息循环,因此将数据接收由原先的拉数据风格变成了推数据风格,从而避免了上层应用循环不断地从本地缓冲区中检查、读取数据,减轻了系统负担,降低了CPU的空转开销。
同时,为了进一步保障两个进程间通信的可靠性,作为本发明的一个实施例,在步骤S203中第一进程与第二进程进行通信的同时,针对每个条通信通道,还可以通过建立检测线程,用于检测该通信通道两端的第一进程及第二进程的状态,当一端进程发生故障时,可以由检测线程通知对方进程以使通信连接能够及时被终止,所占用的共享内存资源能够及时被释放。
作为本发明的一个实施例,由于共享内存的大小在其整个生命期内是固定的,为了容量有限的共享内存能够被长时间地反复读写,将该共享内存设计成循环队列,并在队列的头部分别建立头部标记、尾部标记及折返位置标记,以同步发送进程和接收进程的访问。在具体的通信过程中,发送进程调用SendPacket时移动尾部标记,接收端调用RecvPacket时移动头部标记,当头部标记和尾部标记重叠在一个位置时即表明当前队列为空,用折返位置标记记录该位置之后,即可重新读写共享内存,由此反复读写,很大程度地节约了系统资源。
在本实施例中,基于共享内存的IPC通信机制,通过监听第一进程的连接请求,当有第一进程请求与第二进程进行通信时,根据通信双方的进程标识来建立独立的共享内存以完成进程间的通信,实现了对进程间通信的动态连接,高性能、高灵活性地实现了多进程间通信。
图3示出了本发明第三实施例提供的进程间通信方法的实现流程,本实施例是对本发明第一实施例步骤S202的细化,其描述了两个进程间共享内存创建的具体实现流程,详述如下:
在步骤S301中,所述第一进程创建所述第一共享内存后向所述第二进程发送所述连接请求。
在步骤S302中,所述第二进程接收到所述连接请求后创建所述第二共享内存,并打开所述第一共享内存后向所述第一进程返回第一应答信号。
在步骤S303中,所述第一进程在接收到所述第一应答信号后打开所述第二共享内存,并向所述第二进程返回第二应答信号。
在本实施例中,第二进程和第一进程都拥有自己独立的用于接收数据的共享内存,且会通过打开对方创建的共享内存,作为对应的自己用于发送数据的共享内存。通过上述三次握手,即可以确认共享内存建立成功,由此可以正式建立起第一进程与第二进程之间的双向通信连接,可以开始双向发送、接收数据,完成进程间通信。
图4示出了本发明第四实施例提供的进程间通信方法的实现流程,其是在步骤S203之后的后续实现流程,如图4所示,其步骤S401至步骤S403分别对应本发明第二实施例的步骤S201至步骤S203,其后续实现流程详述如下:
在步骤S404中,所述第一进程向所述第二进程发送通信结束指令,并关闭所述第一共享内存和所述第二共享内存。
在本实施例中,针对第二进程与每个第一进程之间的每条通信通道,一旦某个第一进程与第二进程的此次通信完毕,即可以通知第二进程关闭所涉及的共享内存,及时释放共享内存资源,达到动态销毁IPC连接的目的。
在本发明实施例中,只要第二进程所开启的监听通道未关闭,第二进程即随时处理等待新的第一进程进行通信连接的状态,直到该第二进程也被关闭。
图5示出了本发明第五实施例提供的进程间通信装置的结构,为了便于说明,仅示出了与本实施例相关的部分。
参照图5,该进程间通信装置可运行于如本发明第一实施例所述的系统中,应用于多个第一进程分别与第二进程之间通信,包括:
共享内存建立模块51,根据第一进程的标识及第二进程的标识创建第一共享内存和第二共享内存,所述第一共享内存用于接收所述第一进程的发送数据以使所述第二进程能够从所述第一共享内存中读取该发送数据,所述第二共享内存用于接收所述第二进程的发送数据以使所述第一进程能够从所述第二共享内存中读取该发送数据,所述标识用于唯一标识一个进程。。
作为本发明的一个实施例,共享内存建立模块51还用于创建第三共享内存,以使所述服务端接收第一进程的连接请求。
通信模块52,通过所述第一共享内存和所述第二共享内存进行所述第一进程与所述第二进程之间的通信。
具体地,共享内存建立模块51包括:
共享内存创建子模块511,用于所述第一进程创建所述第一共享内存及所述第二进程创建所述第二共享内存;
共享内存打开子模块512,用于所述第二进程打开所述第一共享内存及所述第一进程打开所述第二共享内存;
握手子模块513,用于所述第一进程向所述第二进程发送所述连接请求,以及所述第一进程与所述第二进程之间发送握手信号。
通信模块52包括:
发送线程建立子模块521,建立发送线程来发送数据,所述发送线程仅在有数据要发送时被激活。
接收线程建立子模块522,建立接收线程来接收数据,所述接收线程仅在有数据需要接收时被激活。
检测线程建立子模块523,建立检测线程,以检测所述第一进程或者所述第二进程是否出现故障。
当所述第一进程或者所述第二进程出现故障时,所述装置还包括:
故障处理模块53,用于由所述检测线程通知对方进程终止通信连接并释放所述第一共享内存和所述第二共享内存。
所述装置还包括:
通信终止模块54,用于所述第一进程向所述第二进程发送通信结束指令,并关闭所述第一共享内存和所述第二共享内存。
本发明实施例一至五提供的进程间通信方法及装置基于共享内存机制来实现,通过监听第一进程的连接请求,当有第一进程请求与第二进程进行通信连接时,根据通信双方的进程的标识来建立独立的共享内存以完成进程间的通信,实现进程间的通信连接的动态创建,高性能、高灵活性地实现了进程间通信。
基于本发明实施例一至五所提供的进程间通信方法及装置,进一步地,在下述实施例中阐述一种基于进程间通信方法及装置实现的控件框架:
通常,为了提高软件的可移植性和可重用性,会将一些需要重复使用的用户界面(User Interface,UI)逻辑封装成可视化控件,以在不同的应用程序中重复使用,且这些控件都是以进程内加载的方式来使用的,例如微软的浏览器控件。然而,随着图形渲染技术的发展,对UI的绚丽度要求越来越高,为了加速图形的渲染,越来越多的程序会把渲染相关的计算交给图形处理单元(Graphics Processing Unit,GPU)来进行硬件加速。在上述背景之下,会出现一个应用程序加载了一个或者多个可视化控件,却由于运行在一台不支持硬件加速的机器上,只能将图形渲染放到CPU中去计算,导致该应用程序运行速度缓慢甚至运行崩溃的情况。
图6示出了本发明第六实施例提供的控件框架的结构框图,在本实施例中,在进程加载上将应用程序中的控件与后台运行的主程序分离开来,将需要跟用户频繁交互或者有复杂动画效果显示的控件放到其他进程内来运行,那么每个控件与主程序就分别是两个独立的进程,每个控件的任何异常状况都不会影响到主程序的执行。在本实施例中,当控件需要与主程序交互时,则采用了本发明实施例一至五所提供的进程间通信方法及装置,高性能、高灵活性地完成控件与主程序之间的通信。为了便于说明,图6仅示出了与本实施例相关的部分。
如图6所示,该控件框架包括了一个主程序61及至少一个控件62,主程序61和每一个控件62均通过不同的进程来进行加载,因此,主程序61和控件62的交互需要通过进程间通信来实现,在本实施例中,主程序61对应的进程即可以理解为上述的第二进程,而每个控件62对应的进程即可以理解为上述的第一进程。为了达到这一目的,在主程序61内包括了:
第一加载模块611,其将主程序61加载进第二进程。
在控件62内包括了:
第二加载模块621,其将控件62加载进第一进程。
在本实施例中,第一加载模块611和第二加载模块621作为主程序或者控件与进程的接口,将主程序或者控件加载进不同的进程以进行交互,因此,相比于微软的D-COM控件框架,其封装了繁琐的通信过程,只需要较低的技术门槛就可实现跨进程的控件框架,用户可以像使用本地进程控件的方式一样操纵远程控件,也方便了程序代码的移植。
在主程序61及每个控件62均被加载进不同的进程之后,该控件框架还包括了如图5所示的进程间通信装置63,其用于完成所述第一进程与第二进程之间的进程间通信。
在本实施例中,上述控件框架由于分离了控件62与主程序61,避免了因为一个应用程序本身加载了一个或者多个控件时应用程序运行缓慢甚至导致应用程序崩溃的情况发生,且即使一个控件崩溃,也不会影响到主程序的正常运行,提高了控件框架的稳定性。同时,本实施例的控件框架封装了繁琐的通信过程,只需要较低的技术门槛就可实现跨进程的控件框架,增加了控件框架的易用性和可移植性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种进程间通信方法,其特征在于,包括:
根据第一进程的标识及第二进程的标识创建第一共享内存和第二共享内存,所述第一共享内存用于接收所述第一进程的发送数据以使所述第二进程能够从所述第一共享内存中读取该发送数据,所述第二共享内存用于接收所述第二进程的发送数据以使所述第一进程能够从所述第二共享内存中读取该发送数据,所述标识用于唯一标识一个进程;
通过所述第一共享内存和所述第二共享内存进行所述第一进程与所述第二进程之间的通信。
2.如权利要求1所述的方法,其特征在于,在所述根据第一进程的标识及第二进程的标识创建第一共享内存和第二共享内存的步骤之前,还包括:
创建第三共享内存,用于所述第二进程接收所述第一进程的连接请求。
3.如权利要求1所述的方法,其特征在于,所述创建第一共享内存和第二共享内存的步骤包括:
所述第一进程创建所述第一共享内存后向所述第二进程发送所述连接请求;
所述第二进程接收到所述连接请求后创建所述第二共享内存,并打开所述第一共享内存后向所述第一进程返回第一应答信号。
所述第一进程在接收到所述第一应答信号后打开所述第二共享内存,并向所述第二进程返回第二应答信号。
4.如权利要求1所述的方法,其特征在于,所述通过第一共享内存和第二共享内存进行所述第一进程与所述第二进程之间的通信的步骤包括:
分别建立发送线程、接收线程来发送、接收数据,所述发送线程仅在有数据要发送时被激活,所述接收线程仅在有数据需要接收时被激活。
5.如权利要求1所述的方法,其特征在于,所述通过第一共享内存和第二共享内存进行所述第一进程与所述第二进程之间的通信的步骤包括:
建立检测线程,用于检测所述第一进程或者所述第一进程是否出现故障;
当所述第一进程或者所述第二进程出现故障时,所述检测线程通知对方进程终止通信连接并释放所述第一共享内存和所述第二共享内存。
6.如权利要求1所述的方法,其特征在于,还包括:
所述第一进程向所述第二进程发送通信结束指令,并关闭所述第一共享内存和所述第二共享内存。
7.如权利要求1所述的方法,其特征在于,应用于多个所述第一进程与一个所述第二进程之间同时通信。
8.一种进程间通信装置,其特征在于,包括:
共享内存建立模块,用于根据第一进程的标识及第二进程的标识创建第一共享内存和第二共享内存,所述第一共享内存用于接收所述第一进程的发送数据以使所述第二进程能够从所述第一共享内存中读取该发送数据,所述第二共享内存用于接收所述第二进程的发送数据以使所述第一进程能够从所述第二共享内存中读取该发送数据,所述标识用于唯一标识一个进程;
通信模块,用于通过所述第一共享内存和所述第二共享内存进行所述第一进程与所述第二进程之间的通信。
9.如权利要求8所述的装置,其特征在于,所述共享内存建立模块还用于创建第三共享内存,以使所述服务端接收所述第一进程的连接请求。
10.如权利要求8所述的装置,其特征在于,所述共享内存建立模块包括:
共享内存创建子模块,用于所述第一进程创建所述第一共享内存及所述第二进程创建所述第二共享内存;
共享内存打开子模块,用于所述第二进程打开所述第一共享内存及所述第一进程打开所述第二共享内存;
握手子模块,用于所述第一进程向所述第二进程发送所述连接请求,以及所述第一进程与所述第二进程之间发送握手信号。
11.如权利要求8所述的装置,其特征在于,所述通信模块包括:
发送线程建立子模块,用于建立发送线程来发送数据,所述发送线程仅在有数据要发送时被激活;
接收线程建立子模块,用于建立接收线程来接收数据,所述接收线程仅在有数据需要接收时被激活。
12.如权利要求8所述的装置,其特征在于,所述通信模块还包括:
检测线程建立子模块,用于建立检测线程,以检测所述第一进程或者所述第二进程是否出现故障;
所述装置还包括:
故障处理模块,用于当所述第一进程或者所述第二进程出现故障时,由所述检测线程通知对方进程终止通信连接并释放所述第一共享内存和所述第二共享内存。
13.如权利要求8所述的装置,其特征在于,还包括:
通信终止模块,用于所述第一进程向所述第二进程发送通信结束指令,并关闭所述第一共享内存和所述第二共享内存。
14.一种进程间通信系统,其特征在于,所述系统包括如权利要求8至13任一项所述的进程间通信装置。
15.一种控件框架,包括一个主程序和至少一个控件,其特征在于,
所述主程序包括第一加载模块,用于将所述主程序加载进第二进程;
每个控件分别包括第二加载模块,用于将所述控件加载进第一进程;
还包括:
如权利要求8至13任一项所述的进程间通信装置,用于完成所述第二进程与至少一个所述第一进程间的通信。
CN201110441767.4A 2011-12-26 2011-12-26 一种进程间通信方法、装置及系统 Active CN103176854B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110441767.4A CN103176854B (zh) 2011-12-26 2011-12-26 一种进程间通信方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110441767.4A CN103176854B (zh) 2011-12-26 2011-12-26 一种进程间通信方法、装置及系统

Publications (2)

Publication Number Publication Date
CN103176854A true CN103176854A (zh) 2013-06-26
CN103176854B CN103176854B (zh) 2018-09-07

Family

ID=48636754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110441767.4A Active CN103176854B (zh) 2011-12-26 2011-12-26 一种进程间通信方法、装置及系统

Country Status (1)

Country Link
CN (1) CN103176854B (zh)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103441831A (zh) * 2013-08-22 2013-12-11 焦点科技股份有限公司 一种双进程间的全双工通信及互保方法和系统
CN104376016A (zh) * 2013-08-15 2015-02-25 腾讯科技(深圳)有限公司 一种浏览器中跨进程渲染方法和装置
CN105357273A (zh) * 2015-09-30 2016-02-24 山东乾云启创信息科技股份有限公司 异步通信模式下socket通信与进程管理通用平台及方法
CN105653386A (zh) * 2015-12-30 2016-06-08 广东欧珀移动通信有限公司 一种进程崩溃处理方法及终端设备
CN105656760A (zh) * 2016-01-08 2016-06-08 华自科技股份有限公司 软件插件之间的通信方法及系统
CN106598696A (zh) * 2016-11-08 2017-04-26 北京华为数字技术有限公司 一种虚拟机之间数据交互的方法及装置
CN106598756A (zh) * 2016-12-13 2017-04-26 重庆川仪自动化股份有限公司 不同应用程序之间的数据交互方法
CN106961482A (zh) * 2017-04-01 2017-07-18 联想(北京)有限公司 一种信息处理方法及装置、存储介质、电子设备
CN107168812A (zh) * 2017-06-12 2017-09-15 迈普通信技术股份有限公司 获取进程数据的方法及装置
CN107688502A (zh) * 2017-08-18 2018-02-13 苏州科达特种视讯有限公司 进程间通信方法及装置
CN108038011A (zh) * 2017-12-28 2018-05-15 深圳市富途网络科技有限公司 一种实现sns多进程通信的方法
CN109117278A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的限制方法、存储介质
CN109542648A (zh) * 2018-11-23 2019-03-29 凌云光技术集团有限责任公司 一种跨进程通信的方法及装置
WO2019072260A1 (zh) * 2017-10-13 2019-04-18 华为技术有限公司 一种进程间通信的方法及系统
CN109756704A (zh) * 2018-11-30 2019-05-14 安徽清新互联信息科技有限公司 一种嵌入式音视频监控系统的进程间通信方法及系统
CN111352743A (zh) * 2018-12-24 2020-06-30 北京新媒传信科技有限公司 一种进程通讯方法和装置
CN111586481A (zh) * 2020-05-06 2020-08-25 海信视像科技股份有限公司 一种终端及应用的处理方法
CN111638975A (zh) * 2020-05-16 2020-09-08 中信银行股份有限公司 基于管道的数据传输方法及系统
CN111638974A (zh) * 2020-05-16 2020-09-08 中信银行股份有限公司 基于内存文件映射的数据传输方法及系统
CN111638976A (zh) * 2020-05-16 2020-09-08 中信银行股份有限公司 基于共享内存的数据传输方法及系统
CN111698138A (zh) * 2020-05-28 2020-09-22 北京朔方天城智能科技有限公司 智能设备网关及其数据通信方法
CN112023402A (zh) * 2020-09-02 2020-12-04 腾讯科技(深圳)有限公司 游戏数据处理方法、装置、设备以及介质
CN112181670A (zh) * 2019-07-02 2021-01-05 西安诺瓦星云科技股份有限公司 进程间通讯方法及装置和Linux设备
CN112764946A (zh) * 2021-01-08 2021-05-07 重庆创通联智物联网有限公司 跨进程数据传输方法、装置、电子设备和存储介质
US20230146036A1 (en) * 2021-11-11 2023-05-11 Kyocera Document Solutions Inc. Library interface for interprocess communication
WO2023160253A1 (zh) * 2022-02-25 2023-08-31 京东方科技集团股份有限公司 业务处理方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5437031A (en) * 1990-10-10 1995-07-25 Fuji Xerox Co., Ltd. Interprocess communications control system
EP0798906A2 (en) * 1996-03-25 1997-10-01 Sun Microsystems, Inc. System and method for secure peer-to-peer communication
CN1928825A (zh) * 2005-09-09 2007-03-14 腾讯科技(深圳)有限公司 一种服务器的实现方法以及服务器系统
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
CN101783794A (zh) * 2009-12-01 2010-07-21 深圳市蓝韵实业有限公司 一种改善存储服务器通信服务稳定性的方法
CN101853238A (zh) * 2010-06-01 2010-10-06 华为技术有限公司 通信处理器间消息通信方法和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5437031A (en) * 1990-10-10 1995-07-25 Fuji Xerox Co., Ltd. Interprocess communications control system
EP0798906A2 (en) * 1996-03-25 1997-10-01 Sun Microsystems, Inc. System and method for secure peer-to-peer communication
CN1928825A (zh) * 2005-09-09 2007-03-14 腾讯科技(深圳)有限公司 一种服务器的实现方法以及服务器系统
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
CN101783794A (zh) * 2009-12-01 2010-07-21 深圳市蓝韵实业有限公司 一种改善存储服务器通信服务稳定性的方法
CN101853238A (zh) * 2010-06-01 2010-10-06 华为技术有限公司 通信处理器间消息通信方法和系统

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104376016A (zh) * 2013-08-15 2015-02-25 腾讯科技(深圳)有限公司 一种浏览器中跨进程渲染方法和装置
CN104376016B (zh) * 2013-08-15 2019-06-07 腾讯科技(深圳)有限公司 一种浏览器中跨进程渲染方法和装置
CN103441831A (zh) * 2013-08-22 2013-12-11 焦点科技股份有限公司 一种双进程间的全双工通信及互保方法和系统
CN103441831B (zh) * 2013-08-22 2016-12-28 焦点科技股份有限公司 一种双进程间的全双工通信及互保方法和系统
CN105357273B (zh) * 2015-09-30 2018-06-19 山东乾云启创信息科技股份有限公司 异步通信模式下socket通信与进程管理通用平台及方法
CN105357273A (zh) * 2015-09-30 2016-02-24 山东乾云启创信息科技股份有限公司 异步通信模式下socket通信与进程管理通用平台及方法
CN105653386A (zh) * 2015-12-30 2016-06-08 广东欧珀移动通信有限公司 一种进程崩溃处理方法及终端设备
CN105653386B (zh) * 2015-12-30 2018-09-21 广东欧珀移动通信有限公司 一种进程崩溃处理方法及终端设备
CN105656760B (zh) * 2016-01-08 2019-01-25 华自科技股份有限公司 软件插件之间的通信方法及系统
CN105656760A (zh) * 2016-01-08 2016-06-08 华自科技股份有限公司 软件插件之间的通信方法及系统
CN106598696B (zh) * 2016-11-08 2020-07-28 北京华为数字技术有限公司 一种虚拟机之间数据交互的方法及装置
CN106598696A (zh) * 2016-11-08 2017-04-26 北京华为数字技术有限公司 一种虚拟机之间数据交互的方法及装置
CN106598756A (zh) * 2016-12-13 2017-04-26 重庆川仪自动化股份有限公司 不同应用程序之间的数据交互方法
CN106961482A (zh) * 2017-04-01 2017-07-18 联想(北京)有限公司 一种信息处理方法及装置、存储介质、电子设备
CN107168812A (zh) * 2017-06-12 2017-09-15 迈普通信技术股份有限公司 获取进程数据的方法及装置
CN107688502B (zh) * 2017-08-18 2021-04-06 苏州科达特种视讯有限公司 进程间通信方法及装置
CN107688502A (zh) * 2017-08-18 2018-02-13 苏州科达特种视讯有限公司 进程间通信方法及装置
WO2019072260A1 (zh) * 2017-10-13 2019-04-18 华为技术有限公司 一种进程间通信的方法及系统
US11892953B2 (en) 2017-10-13 2024-02-06 Huawei Technologies Co., Ltd. Interprocess communication method and interprocess communications system
CN108038011A (zh) * 2017-12-28 2018-05-15 深圳市富途网络科技有限公司 一种实现sns多进程通信的方法
CN109117278A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的限制方法、存储介质
CN109542648A (zh) * 2018-11-23 2019-03-29 凌云光技术集团有限责任公司 一种跨进程通信的方法及装置
CN109756704A (zh) * 2018-11-30 2019-05-14 安徽清新互联信息科技有限公司 一种嵌入式音视频监控系统的进程间通信方法及系统
CN111352743A (zh) * 2018-12-24 2020-06-30 北京新媒传信科技有限公司 一种进程通讯方法和装置
CN111352743B (zh) * 2018-12-24 2023-12-01 北京新媒传信科技有限公司 一种进程通讯方法和装置
CN112181670A (zh) * 2019-07-02 2021-01-05 西安诺瓦星云科技股份有限公司 进程间通讯方法及装置和Linux设备
CN112181670B (zh) * 2019-07-02 2023-04-11 西安诺瓦星云科技股份有限公司 进程间通讯方法及装置和Linux设备
CN111586481A (zh) * 2020-05-06 2020-08-25 海信视像科技股份有限公司 一种终端及应用的处理方法
CN111586481B (zh) * 2020-05-06 2022-06-14 海信视像科技股份有限公司 一种终端及应用的处理方法
CN111638974A (zh) * 2020-05-16 2020-09-08 中信银行股份有限公司 基于内存文件映射的数据传输方法及系统
CN111638976A (zh) * 2020-05-16 2020-09-08 中信银行股份有限公司 基于共享内存的数据传输方法及系统
CN111638975A (zh) * 2020-05-16 2020-09-08 中信银行股份有限公司 基于管道的数据传输方法及系统
CN111698138B (zh) * 2020-05-28 2021-11-02 北京朔方天城智能科技有限公司 智能设备网关及其数据通信方法
CN111698138A (zh) * 2020-05-28 2020-09-22 北京朔方天城智能科技有限公司 智能设备网关及其数据通信方法
CN112023402B (zh) * 2020-09-02 2021-07-27 腾讯科技(深圳)有限公司 游戏数据处理方法、装置、设备以及介质
CN112023402A (zh) * 2020-09-02 2020-12-04 腾讯科技(深圳)有限公司 游戏数据处理方法、装置、设备以及介质
CN112764946A (zh) * 2021-01-08 2021-05-07 重庆创通联智物联网有限公司 跨进程数据传输方法、装置、电子设备和存储介质
CN112764946B (zh) * 2021-01-08 2024-02-02 重庆创通联智物联网有限公司 跨进程数据传输方法、装置、电子设备和存储介质
US20230146036A1 (en) * 2021-11-11 2023-05-11 Kyocera Document Solutions Inc. Library interface for interprocess communication
WO2023160253A1 (zh) * 2022-02-25 2023-08-31 京东方科技集团股份有限公司 业务处理方法及装置

Also Published As

Publication number Publication date
CN103176854B (zh) 2018-09-07

Similar Documents

Publication Publication Date Title
CN103176854A (zh) 一种进程间通信方法、装置及系统
US10120705B2 (en) Method for implementing GPU virtualization and related apparatus, and system
WO2019169913A1 (zh) 一种数据处理的方法、装置、服务器和系统
CN105183675B (zh) 对usb设备的访问方法、装置、终端、服务器及系统
US20190141145A1 (en) Cloud-scale heterogeneous datacenter management infrastructure
US8195968B2 (en) System and method for power reduction by sequestering at least one device or partition in a platform from operating system access
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
US20160285958A1 (en) Application container for live migration of mobile applications
US9952992B2 (en) Transaction request optimization for redirected USB devices over a network
KR20120087967A (ko) 응용 프로그램 화상의 표시 방법 및 장치
US8635632B2 (en) High performance and resource efficient communications between partitions in a logically partitioned system
WO2019028682A1 (zh) 一种多系统共享内存的管理方法及装置
WO2019201340A1 (zh) 处理器核心调度方法、装置、终端及存储介质
CN115203142A (zh) 一种多核核间实时通信系统及方法
WO2022143714A1 (zh) 服务器系统、虚拟机创建方法及装置
US10318343B2 (en) Migration methods and apparatuses for migrating virtual machine including locally stored and shared data
CN113821309B (zh) 一种微内核虚拟机间的通信方法、装置、设备及存储介质
WO2017166997A1 (zh) 智能网卡侧的异常处理方法和装置
US10313450B2 (en) Method for transparently connecting augmented network socket operations
CN113242175B (zh) 一种基于spdk的存储网关及其实现方法
US9507637B1 (en) Computer platform where tasks can optionally share per task resources
CN107608806A (zh) 一种虚拟机间快速访问传输数据的系统及方法
CN111274044A (zh) Gpu虚拟化资源限制处理方法及装置
US20150121376A1 (en) Managing data transfer
CN114296916B (zh) 一种提高释放rdma性能的方法、装置及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant