进程间通信方式的通信方式中每次数据的读写位置是怎么确定的

[发明专利]一种进程间通信方法及装置在审
申请/专利权人:
公开/公告号:CNA
发明/设计人:;;;
公开/公告日:
主分类号:
搜索关键词:
【说明书】:
本发明涉及通信技术领域,尤其是一种进程间通信方法及装置。
不同进程之间需要进行通信,例如一个进程向另一进程发送数据,或者
接收另一进程发送的数据。现有技术中,不同进程之间的通信方式是共享内
存的方式,即在内存中设置共享区域,当一个进程需要向另一进程发送数据
时,将该数据写入至该共享内存区域中,当写入完毕后,向另一进程发送通
知,以告知该另一进程可以读取共享内存区域,或者,修改内存特征值,当
另一进程监测到内存特征值被修改后,可以读取共享内存区域。
然而,上述基于共享内存的进程通信方式,需要控制进程间的读写同步,
开发过程较为复杂。
有鉴于此,本发明提供了一种进程间通信方法及装置,用以解决现有技
术中进程间通信方法开发过程复杂的技术问题。为实现所述目的,本发明提
供的技术方案如下:
一种进程间通信方法,包括:
当第一进程生成数据时,获取预先创建的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,其揭示出了本发明实施例提供的进程间通信方法的流程,具体
包括以下流程:
步骤S101:当第一进程生成数据时,获取预先创建的Boost消息队列。
其中,当第一进程生成数据且需要将该数据发送至第二进程时,则获取
预先创建的Boost消息队列。Boost消息队列用于将数据发送至第二进程。
步骤S102:将所述数据写入所述Boost消息队列。
本实施例中,将数据直接写入Boost消息队列即可,Boost消息队列的自
身可以实现将数据发送至第二进程端,其中,第二进程端预先设置有接收模
块,用于执行下一步骤。
步骤S103:当接收到所述写有数据的Boost消息队列时,提取其中的数据
并发送至第二进程。
其中,当第二进程端的接收模块接收到写有数据的Boost消息队列时,接
收模块提取其中的数据,并将提取到的数据发送至第二进程,从而完成第一
进程向第二进程发送数据的过程。如图2所示,在第一进程端设置有发送模块,
Boost消息队列调用发送模块实现数据的发送,在第二进程端设置有接收模块,
接收模块实现数据的接收,从而完成不同进程的通信。
本实施例中,接收模块可以实时监测是否有消息队列发送到自身,或者,
接收模块并不进行监测,而是消息队列到达后触发接收模块,则被触发的接
收模块提取其中的数据。
由以上的技术方案可知,本实施例提供的进程间通信方法包括:当第一
进程生成数据时,获取预先创建的Boost消息队列,直接将数据写入Boost消息
队列中,利用Boost消息队列自身的机制实现将数据发往第二进程端,当第二
进程端设置的接收模块接收到写有数据的Boost消息队列时,提取其中的数据,
并将提取的数据发送至第二进程。
简单而言,本发明实施例在第一进程端以写模式创建Boost消息队列,在
第二进程端以读模式打开该消息队列。第一进程端在Boost消息队列中写入数
据,第二进程端读取其中的数据。与现有技术相比,本发明实施例并未将第
一进程的数据直接放入共享内存,而是利用Boost消息队列将数据发送至第二
进程。这样,本发明实施例在开发过程中并不需要控制进程间访问共享内存
时的读写同步操作,开发过程更加简单。
需要说明的是,两个进程是在同一台设备中,且并不限定设备使用的平
台类型,可以是Linux平台,也可以是Windows平台。另外,第一进程向第二
进程发送的进程数据可以为调用数据,该调用数据触发第二进程向第一进程
发送进程数据,从而实现第一进程对第二进程的调用。当然,第二进程向第
一进程发送进程数据的方式可以是本发明实施例提供的进程间通信方法。
友情链接:交换友情链接需要网站权重大于2,网站收录10W以上,如符合条件,请联系QQ:。
行业网站:相关推荐:
400-周一至周五 9:00-18:00
服务热线:400-投诉建议:022-
扫一扫,微信关注高智网
高智&让创新无法想象2000万件&专利数据Windows进程间各种通信方式浅谈——转
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。实时交互应用架构——进程间高效通信方式问题 - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
最近在使用socket.io开发一个实时交互应用,遇到一个问题:
1、socket.io所在的nodejs进程,由于需要负责与所有的client进行通信、心跳,再加上要做游戏内部的逻辑处理,所以占用了主线程cpu,并发连接数上不去
现在想把架构修改一下:
1、Nodejs工作进程(水平扩展)
负责与client通信、广播消息、心跳等,不处理业务逻辑。收到请求后,把请求转发给逻辑处理进程来进行业务处理
2、逻辑处理进程
负责内存中保存业务数据,接收工作进程的消息,进行逻辑处理,并把处理结果返回。
现在的问题是,如何实现这2种进程之间的通信比较好。
1、据我所知,node只提供了主、子进程之间的通信api,且写起来很麻烦
2、一种方法是工作进程和逻辑处理进程都作为一个http服务器存在,互相之间通过http通信,但感觉这种方式好像比较‘重‘
请教高手有没有好的办法
我做的一个项目中,是用socket进行服务通信,主要是考虑到服务可以异地部署,数据格式定义也要容易些。看了一篇文章,三种进程间通信方式,匿名管道、共享内存、套接字,其中匿名管道效率是最高的,Node的子进程通信应该也是采用这种方式吧
感谢,可以给个文章地址么。那你们的项目中是自己写socket,定义消息的格式来做的么
用的Node的socket模块,消息格式是JSON,可以多实践哈
可以起多个node进程啊(cluster)
可以多子进程处理,通信可以通过主进程的事件来触发和广播。
其实这是nodejs进程间通信协议的选择,考虑到以后的扩展性、分布式部署、简单易用等特点,socket.io长连接挺好。如果想提高效率,就用原生的socket协议吧。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的当前位置:&&
本页文章导读:
&&&&?历程与进程间的通信方式-面试常考题目 &&&&&& 进程与进程间的通信方式--面试常考题目1.管道(pipe)及有名管道(named pipe):
管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系.........&&&&? CSDN博客频道“腾挪开发那点事”——主题征文活动 &&&&&& CSDN博客频道“移动开发那点事”——主题征文活动
-20日,CSDN联合创新工场,隆重推出——移动开发者大会·中国2012。借此,CSDN博客频道与国内第二大IT技术社区ITeye共同举办10.........&&&&? 中国网速全世界倒数? 测速结果引关注&&&&&& 中国网速世界倒数? 测速结果引关注每年的节假日,既是扎堆儿旅游的高峰,也是蜗居一族上网的高峰。对于宅在家中上网人群来说,网速究竟有多快,是一个有争议的问题。近日,有媒体.........
[1]历程与进程间的通信方式-面试常考题目
&&&&来源:&互联网& 发布时间:&
进程与进程间的通信方式--面试常考题目1.管道(pipe)及有名管道(named pipe):
管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
2.信号(signal):
信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。
3.消息队列(message queue):
消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。
4.共享内存(shared memory):
可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。
5.信号量(semaphore):
主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段。
6.套接字(socket);
这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。
[2] CSDN博客频道“腾挪开发那点事”——主题征文活动
&&&&来源:&互联网& 发布时间:&
CSDN博客频道“移动开发那点事”——主题征文活动
-20日,CSDN联合创新工场,隆重推出——移动开发者大会·中国2012。借此,CSDN博客频道与国内第二大IT技术社区ITeye共同举办10月“移动开发那点事”——主题征文活动。发博文谈谈你与移动开发之间的故事或者参与移动大会后的感想,即可参与活动。你与移动开发何时结下情缘?你对2012年移动开发者大会有何期待?快来发博文吧,精彩好礼等着你哦!
【活动时间】日-日
【活动规则】
1、 活动期间,在CSDN博客中发表一篇与本次活动主题相关的文章,并将文章的标题和链接发到本公告的评论中。
2、 文章必须是原创内容,如被举报抄袭则取消参赛资格。
3、 每个ID仅限一篇文章参赛,博文总字数不少于300字。
4、 本活动最终获奖名单统计以回复在本文评论区域的博文标题及链接为准。(不按要求填写者视为自动放弃)
【奖项设置】
优秀文章奖:由CSDN博客频道和ITeye社区编辑在此次所有参赛文章中(CSDN+ITeye)选出15篇最佳的文章获得优秀文章奖,并评选出以下三个奖项
一等奖(1名) 精美内胆包1个+最新《程序员》杂志1本二等奖(6名) 技术好书1本
(数量有限,先到先得)三等奖(8名) 《程序员》杂志1本
阳光普照奖:
CSDN用户:所有参加活动的CSDN博主都可获得20个下载积分。
ITeye用户:从所有参加活动的ITeye用户中随机抽选五名幸运用户,赠送最新《程序员》杂志一本。
温馨提示:10月31日发布获奖名单,请随时关注,以免错过您的奖品:)
以下是本次活动奖品的备选书单
Ajax模式与最佳实践
Application Center 2000
Atlas基础教程
CSS Web 站点设计手册
Google Android 创赢路线与产品开发实战
iPhone SDK 3 开发指南
iphone 影像随行
LPI LINUX认证权威指南(影印版)
Ophone 应用开发权威指南
Ubuntu标准教程
VB.NET XML Essential XML Skills for VB.NET Programmers
Visual Basic 2005入门经典(第4版)
Windows高级调试
程序员锻炼三部曲 第一部 版本控制之道——使用CVS
计算机网络与因特网(原书第4版)
计算机系统概论
精通NetBeans——Java桌面、Web与企业级程序开发详解
嵌入式系统编程(二)(影印版)
深入浅出Ajax
瞬间之美 Web界面设计如何让用户心动
Access2007 开发指南
Symbian Os C++手机应用开发
应用Rails进行敏捷Web开发
Ubuntu标准教程
C程序设计思想与方法
Professional ASP.NET Web Service with VB.NET
疯狂的程序员
Java与XML数据库整合应用
JSP数据库通用模块开发与系统移植
Ubuntu实战技巧精粹
学习Web设计
Ajax 编程技术与实例
JSP网络开发实用工程案例
Softimage/XSI 动画技术精粹
嵌入式Linux基于ARM系统开发技术详解
CSS Web 站点设计手册
搜索引擎营销的成功策略与技巧解密
征服ASP.NET 2.0 Ajax——Web开发技术详解
用户体验面面观——方法、工具与实践
Google Hacks 巧妙使用网络搜索的技巧和工具
模神——3ds max9 人体高级建模宝典
实战Pro/ENGINEER Wildfire 4.0 钣金设计(中文版)
UNIX编程艺术
Effective C++ 改善程序与设计的55个具体做法 中文版(第三版)
More Exceptional C++ 40个新的工程难题 编程疑问及解决方法(中文版)
实战Pro/ENGINEER Wildfire 4.0 玩具设计(中文版)
Android开发入门与实践
ASP.NETMVC2开发实战
ORACLE 10G
RESTful Web Services Cookbook
高性能JavaScript
实战突击ASP.NET项目开发案例整合
实战突击JAVA项目开发案例整合
B2B2C网上商城开发指南
MORE EFFECTIVE C++
死亡之旅(原书第2版)
Java经典编程300例
JSP & Servlet学习笔记(第2版)新手学JavaFX
Linux网络安全技术与实现(第2版)
Linux下的MySQL数据库编程
MySQL原理与Web系统开发
精通ASP.NET Web程序测试
深入浅出Windows Phone 7 应用开发
HTML5+CSS3网页布局和样式精粹
SharePoint 2007入门经典
T-SQL编程入门经典(涵盖SQL Server )
Visual Basic 2008程序设计(第七版)
领域驱动设计C# 2008实现
深入解析Windows Vista SP1(第2版)
数据仓库设计:现代原理与方法
Android多媒体开发高级编程——为智能手机和平板电脑开发图形、音乐、视频和富媒体应用
iPhone&iPad高级编程
xcode3高级编程
Flash移动开发高级教程——创建Anroid & iPhone应用
Crystal Reports 2008 水晶报表官方指南(第2版)
谷歌之道——网络时代的管理创新
管好团队做对事——软件企业成长手册
流量的秘密:Google Analytics网站分析与优化技巧(第2版)
写给Web开发人员看的HTML5教程
ITeye活动链接:/blog/1694884
本活动最终解释权归CSDN博客频道所有。
如对活动有任何疑问请发邮件到客服邮箱blog(at)csdn.net联系博客管理员,感谢大家对CSDN博客频道的支持!
1楼blogdevteam1小时前请按以下格式填写如:n博文标题:CSDN博客频道“移动开发那点事”——主题征文活动n链接:http://blog.csdn.net/blogdevteam/article/details/8055079
[3] 中国网速全世界倒数? 测速结果引关注
&&&&来源:&互联网& 发布时间:&
中国网速世界倒数? 测速结果引关注每年的节假日,既是扎堆儿旅游的高峰,也是蜗居一族上网的高峰。对于宅在家中上网人群来说,网速究竟有多快,是一个有争议的问题。近日,有媒体说中国网速仅有韩国九分之一,中国网速到底快不快?谁能给个标准答案?
今年上半年,很多媒体都报道了全国宽带网速慢、收费高的消息,称中国网速不及发达国家十分之一,收费却要高三四倍。对此,各地都陆续启动了宽带提速活动。3月1日,北京联通宣布,3月1日起对北京全网宽带用户免费提速,网速将至少升级一倍。
费用高出3倍
速度不足1/10
据"360宽带测速器"对近期用户分享的测试数据统计分析,全国除港、澳、台之外的31个省、市、自治区的网民平均上网带宽为3.2Mbps,全国网速最快前五名分别为上海、新疆、海南、北京和天津,而广西则以2.3Mbps的带宽排名最后。
国际对比则非常不乐观。据央视报道,截至2010年,我国宽带上网平均速率位列全球71位,不及美国英国日本等三十几个经济合作组织国家平均水平的十分之一。但是,平均一兆每秒的接入费用却是发达国家平均水平的3-4倍。
专家称"已经够快" 测速器试试看
对于中国的网速,一些专家也有不同看法。北京邮电大学阚凯力教授称,从世界范围来看,我国网速中等偏上;从绝对价格来说,网费中等偏低。教授一席话,再次掀起了网速和网费的古老话题。
目前,电信运营商提供的宽带一般在512K至8M,部分地区也有10M以上光纤接入。但是,用户自己对实际网速却没有概念。360的"网速测试器"就可以测试自己当前网络实际速度,并可以和其他好友PK网速,知道自己在全国网民中的速度到底算快还是算慢。
据了解,360网速测试器是目前相对比较权威的测速工具,它采用的是HTTP多线程下载和广域网P2P下载结合的测速方法,通过下载数据块把带宽"打满",测试带宽稳定值。相比用户自行下载某个文件来测试速度,更能反映自家带宽的实际情况。
此前,工业和信息化部副部长杨学山曾在媒体前表示"要让每个老百姓得到高质量、可支付起的宽带服务。"以360宽带测速器数据来看,距离高质量的宽带服务,我们任重而道远。
最新技术文章:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!
(C)2012-,E-mail:www_169it_(请将#改为@)

我要回帖

更多关于 进程的通信方式 的文章

 

随机推荐