首页 > 系统服务 > 详细

IPC进程间通信

时间:2019-12-13 18:27:45      阅读:117      评论:0      收藏:0      [点我收藏+]

IPC(InterProcess Communcation)五种方式

一、管道

无名管道

单向通道,只能把第一条命令输出作为第二条命令输入

命名管道

单向通道,首先创建命名管道,然后用a进程写数据,b进程读数据;

但管道内容未被读出,那么命令会一直停在这里,只有当另一个把管道内的内容读出来之后命令才能结束。

管道缺点:通信效率低下,a进程给b进程传输数据,只有b进程读取数据之后a进程才能返回,所以不适合频繁通信,为了解决这个问题,引入消息队列

 

二、消息队列

管道一定要b通信读取之后a才能返回,用消息队列的通信模式可以解决

a通信给b进程发送消息,把消息放在队列中,b进程根据需要去对应,反之也可以,类似缓存

消息队列缺点:数据占内存较大,通信频繁,发送消息(拷贝)过程会花很多时间,解决问题使用共享内存

 

三、共享内存

a传到b,加入文件较大,拷贝过程会花很长时间,共享内存可以解决拷贝时间

系统加载一个进程,分配给内存的是虚拟内存,两个进程各自拿出一块虚拟地址,然后映射到同一个实际物理内存中,可以实现共享机制。

共享机制缺点:存在多进程竞争的问题,比如线程安全,使用以下信号量

四、信号量

信号量本质就是一个计数器,用来处理进程之间互斥与同步。

例如:信号量初始值为1,a进程访问内存1时把信号量置为0,b进程访问内存1时信号量为0,则无法访问内存1。

 

五、Socket

以上四种方式都是多进程于一台主机,超远距离进程间通信需要Socket。

例如:浏览器发起http请求,然后服务器会返回对应的数据,这种就是Socket通信。

IPC进程间通信

原文:https://www.cnblogs.com/Atractylodes/p/12036213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!