一种进程间通信方法及装置制造方法及图纸

技术编号:13192429 阅读:72 留言:0更新日期:2016-05-11 19:39
本申请提供了一种进程间通信方法及装置,该方法包括:当第一进程生成数据时,获取预先创建的Boost消息队列,将数据直接写入Boost消息队列,当第二进程端设置的接收模块接收到写有数据的Boost消息队列时,提取其中的数据,并将提取的数据发送至第二进程。与现有技术相比,本发明专利技术实施例并未将第一进程的数据直接放入共享内存,而是将数据写入Boost消息队列中,利用Boost消息队列实现第一进程将数据通信至第二进程。因而在开发过程中并不需要控制读写同步问题,开发过程更加简单。

【技术实现步骤摘要】

本专利技术涉及通信
,尤其是一种进程间通信方法及装置
技术介绍
不同进程之间需要进行通信,例如一个进程向另一进程发送数据,或者接收另一进程发送的数据。现有技术中,不同进程之间的通信方式是共享内存的方式,即在内存中设置共享区域,当一个进程需要向另一进程发送数据时,将该数据写入至该共享内存区域中,当写入完毕后,向另一进程发送通知,以告知该另一进程可以读取共享内存区域,或者,修改内存特征值,当另一进程监测到内存特征值被修改后,可以读取共享内存区域。然而,上述基于共享内存的进程通信方式,需要控制进程间的读写同步,开发过程较为复杂。
技术实现思路
有鉴于此,本专利技术提供了一种进程间通信方法及装置,用以解决现有技术中进程间通信方法开发过程复杂的技术问题。为实现所述目的,本专利技术提供的技术方案如下:—种进程间通信方法,包括:当第一进程生成数据时,获取预先创建的Boost消息队列;将所述数据写入所述Boost消息队列;当接收到所述写有数据的Boost消息队列时,提取其中的数据并发送至第二进程。可选地,所述将所述数据写入所述Boost消息队列包括:确定所述数据的长度及所述Boost消息队列的预设单消息长度;当所述数据的长度大于所述预设单消息长度时,以所述预设单消息长度为单位,对所述数据进行切片,获得多个切片数据;将所述多个切片数据写入所述Boost消息队列。可选地,所述将所述多个切片数据写入所述Boost消息队列包括:依据切片顺序,将所述多个切片数据写入所述Boost消息队列。可选地,在对所述数据进行切片,获得多个切片数据之后,还包括:统计所述切片数据的个数,并将统计的所述个数写入所述Boost消息队列。可选地,所述当接收到所述写有数据的Boost消息队列时,提取其中的数据并发送至第二进程包括:当接收到所述写有数据的Boost消息队列时,提取其中的切片数据,直至提取的切片数据的个数等于统计的所述个数;拼接提取到的切片数据,并将拼接获得的数据发送至第二进程。本申请提供了一种进程间通信装置,包括:消息队列获取模块,用于当第一进程生成数据时,获取预先创建的Boost消息队列;消息队列写入模块,用于将所述数据写入所述Boost消息队列;进程数据提取模块,用于当接收到所述写有数据的Boost消息队列时,提取其中的数据并发送至第二进程。可选地,所述消息队列写入模块包括:长度确定子模块,用于确定所述数据的长度及所述Boost消息队列的预设单消息长度;数据切片子模块,用于当所述数据的长度大于所述预设单消息长度时,以所述预设单消息长度为单位,对所述数据进行切片,获得多个切片数据;数据写入子模块,用于将所述多个切片数据写入所述Boost消息队列。可选地,所述数据写入子模块包括:顺序写入单元,用于依据切片顺序,将所述多个切片数据写入所述Boost消息队列。可选地,所述消息队列写入模块还包括:个数写入子模块,用于在对所述数据进行切片,获得多个切片数据之后,统计所述切片数据的个数,并将统计的所述个数写入所述Boost消息队列。可选地,所述进程数据提取模块包括:数据提取子模块,用于当接收到所述写有数据的Boost消息队列时,提取其中的切片数据,直至提取的切片数据的个数等于统计的所述个数;数据拼接子模块,用于拼接提取到的切片数据,并将拼接获得的数据发送至第二进程。由以上方案可知,本申请的有益效果是:本专利技术提供了一种进程间通信方法及装置,该方法包括:当第一进程生成数据时,获取预先创建的Boost消息队列,将数据直接写入Boost消息队列,当第二进程端设置的接收模块接收到写有数据的Boost消息队列时,提取其中的数据,并将提取的数据发送至第二进程。与现有技术相比,本专利技术实施例并未将第一进程的数据直接放入共享内存,而是将数据写入Boost消息队列中,利用Boost消息队列实现第一进程将数据通信至第二进程。因而在开发过程中并不需要控制读写同步问题,开发过程更加简单。【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例提供的进程间通信方法的流程图;图2为本专利技术实施例提供的发送模块及接收模块的示意图;图3为本专利技术另一实施例提供的进程间通信方法的部分流程图;图4为本专利技术实施例提供的进程间通信装置的结构框图;图5为本专利技术另一实施例提供的进程间通信装置的部分结构框图。【具体实施方式】下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。参照图1,其揭示出了本专利技术实施例提供的进程间通信方法的流程,具体包括以下流程:步骤SlOl:当第一进程生成数据时,获取预先创建的Boost消息队列。其中,当第一进程生成数据且需要将该数据发送至第二进程时,则获取预先创建的Boost消息队列。Boost消息队列用于将数据发送至第二进程。步骤S102:将所述数据写入所述Boost消息队列。本实施例中,将数据直接写入Boost消息队列即可,Boost消息队列的自身可以实现将数据发送至第二进程端,其中,第二进程端预先设置有接收模块,用于执行下一步骤。步骤S103:当接收到所述写有数据的Boost消息队列时,提取其中的数据并发送至第二进程。其中,当第二进程端的接收模块接收到写有数据的Boost消息队列时,接收模块提取其中的数据,并将提取到的数据发送至第二进程,从而完成第一进程向第二进程发送数据的过程。如图2所示,在第一进程端设置有发送模块,Boost消息队列调用发送模块实现数据的发送,在第二进程端设置有接收模块,接收模块实现数据的接收,从而完成不同进程的通信。本实施例中,接收模块可以实时监测是否有消息队列发送到自身,或者,接收模块并不进行监测,而是消息队列到达后触发接收模块,则被触发的接收模块提取其中的数据。由以上的技术方案可知,本实施例提供的进程间通信方法包括:当第一进程生成数据时,获取预先创建的Boost消息队列,直接将数据写入Boost消息队列中,利用Boost消息队列自身的机制实现将数据发往第二进程端,当第二进程端设置的接收模块接收到写有数据的Boost消息队列时,提取其中的数据,并将提取的数据发送至第二进程。简单而言,本专利技术实施例在第一进程端以写模式创建Boost消息队列,在第二进程端以读模式打开该消息队列。第一进程端在Boost消息队列中写入数据,第二进程端读取其中的数据。与现有技术相比,本专利技术实施例并未将第一进程的数据直接放入共享内存,而是利用Boost消息队列将数据发送至第二进程。这样,本专利技术实施例在开发过程中并不需要控制进程间访问共享内存时的读写同步操作,开发过程更加简单。需要说明的是,两个进程是在同一台设备中,且并不限定设备使用的平台类型,可以是Linux平台,也可以是Windows平台。另外,第一进程向第二进程发送的进程本文档来自技高网...

【技术保护点】
一种进程间通信方法,其特征在于,包括:当第一进程生成数据时,获取预先创建的Boost消息队列;将所述数据写入所述Boost消息队列;当接收到所述写有数据的Boost消息队列时,提取其中的数据并发送至第二进程。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:罗鹰李亮林康侯勇军
申请(专利权)人:成都科来软件有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1