管道

1) 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;

2) 匿名管道只能用于具有亲缘关系的进程,有名管道则没有限制。

3) 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,而是单独构成一种文件系统,只存在与内存中。

管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区存取数据:管道一端的进程顺序地将进程数据写入缓冲区,另一端的进程则顺序地读取数据,该缓冲区可以看做一个循环队列,读和写的位置都是自动增加的。

消息队列

消息队列,就是一个消息的链表,是一系列保存在内核中消息的列表。用户进程可以向消息队列添加消息,也可以向消息队列读取消息。

消息队列与管道通信相比,其优势是对每个消息指定特定的消息类型,接收的时候不需要按照队列次序,而是可以根据自定义条件接收特定类型的消息。

共享内存

共享内存允许两个或多个进程共享一个给定的存储区,通过对一个共享的内存读取读出,实现了进程间的通信。

优点是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝,对于像管道和消息队里等通信方式,则需要再内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次:一次从输入文件到共享内存区,另一次从共享内存到输出文件。

信号量

信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它可以看作一种锁机制,作为进程间以及同一进程内不同线程之间的同步手段。

Socket

前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程。

扩展内容(进程的通信方式)相关推荐

  1. php鼠标悬浮显示,CSS3实现鼠标悬停显示扩展内容

    本文给大家分享css3代码实现鼠标悬停显示要扩展的内容,在空间过于拥挤时需要隐藏部分内容使用此功能比较好,下面小编给带来了具体实现代码,一起看看吧 我们在做导航标签的时候,有时会出现空间过于拥挤需要隐 ...

  2. java web 进程通信_RMI网络编程开发之一 JAVA“进程间”通信方式

    注意该标题是 "进程"间通信,而并非"线程"之间的通信. 线程之间的通信是多线程的讨论范畴.这里我们是要讨论分布式的独立的JAVA程序之间是怎么通信的.当然,大 ...

  3. 音视频方案,音视频扩展内容- 音视频数据解析,码流分析及质量评价(笔记)3

    -- 音视频编解码流程如下图: -- 关于音频各种参数: freq:音频数据的采样率.常用的有48000,44100等. format:音频数据的格式.举例几种格式: AUDIO_U16SYS:Uns ...

  4. Markdown快速入门和扩展内容(Typora)

    ​ Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式.但是它本身是不支持修改字体.字号与颜色等功能的!   CSDN-mark ...

  5. DeepLearning | Zero Shot Learning 零样本学习(扩展内容、模型、数据集)

    之前写过一篇关于零样本学习的博客,当时写的比较浅.后来导师让我弄个ppt去给本科生做一个关于Zero Shot Learning 的报告,我重新总结了一下,添加了一些新的内容,讲课的效果应该还不错,这 ...

  6. 音视频方案,音视频扩展内容(RTMP,FFMpeg/H.26*/mpeg*/AVC等标准与协议)(笔记)1,视频格式

    视频方案,雷霄骅的专栏- http://blog.csdn.net/leixiaohua1020  > SI, TI   ITU-R BT.1788建议使用时间信息(TI,Temporal pe ...

  7. CSS进阶(4)- 扩展内容

    本系列笔记是基于[渡一教育]袁进老师的html+css基础课程而记录,仅作为个人记录以及阅读使用. 文章目录 浮动的细节规则 行高的取值 body背景 行盒的垂直对齐 多个行盒垂直方向上的对齐 图片的 ...

  8. 扩展内容(线程的同步方法)

    1. 临界区(CCriticalSection) 当多个线程访问一个独占性共享资源时,可以使用临界区对象.拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的 ...

  9. 音视频方案,音视频扩展内容(编码解码器) (笔记)2

    视频方案,雷霄骅的专栏- http://blog.csdn.net/leixiaohua1020 > LAV Filter   LAV Filter 是一款开源的DirectShow视频分离和解 ...

最新文章

  1. 面试彩蛋2:分别用循环和递归实现下列函数
  2. 检测不到信号,是加点噪声?还是滤除噪声?
  3. 把Qt的界面文件(.ui文件)生成源文件(.h或.cpp)封装成链接库
  4. 迅雷的user-agent
  5. CentOS部署NetCore - 2. 安装NetCore SDK On CentOS
  6. 从一次线下读书会获得的收获
  7. KVO-基本使用方法-底层原理探究-自定义KVO-对容器类的监听
  8. c++ 多核cpu序列号_关于 CPU 的一些基本知识总结
  9. idea 远程调试_我的天!你竟然不会用IDEA远程调试Tomcat...
  10. php excel 函数,php实现excel中rank函数功能的方法
  11. ubuntu server 12.04 jdk,ssh及hadoop配置
  12. 真机上装不上测试应用,Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
  13. Windows界面编程_Miniblink(2) 嵌入到Win32窗口里
  14. Android Dialog的简单说明
  15. stm32码盘传感器_STM32电机测速(正交或者霍尔编码器)
  16. 百度黑洞效果实现原理
  17. 视频: 老罗演讲问答集锦
  18. 工作-一个依赖依赖的依赖导致的血案
  19. 学习强国十年磨剑最新分数及排名
  20. (转)视觉工程师必须知道的工业相机50问,绝对干货!

热门文章

  1. linux 如何查看应用程序进程号、端口
  2. 细数 Spring 那些最常见的面试问题
  3. 设计模式:各个模式间的对比
  4. WebRTC/Chromium在2020年的更新
  5. 美摄云非编系统——网页端实时编辑渲染方案
  6. 从云计算到低延时,传统编码器与创新技术双剑合璧严把成本质量关
  7. 拿什么保护你,我的区块链
  8. 腾讯高性能图计算框架Plato及其算法应用
  9. Serverless.com CEO首次访华!探讨无服务器技术落地
  10. HttpDNS功能说明及实现