管道

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. R Learnilng 十八讲7-12
  2. java 操作数据库
  3. 请教大家,如何使用sed命令,替换文件指定行的内容呢?-Linux系统管理-ChinaUnix.net...
  4. 推荐一个算法/数据结构 可视化(Data structure Visualization) 网站
  5. 【体验】18650锂电池充电器体验,功能测试,18650充电测试
  6. python libusb1库
  7. 【HDU 2507】【ACM-ICPC算法基础训练教程 题1-6】迷瘴(贪心)
  8. EOJ_1057_排名汇总
  9. 腾讯---生成格雷码
  10. mockito mock void方法_使用 Junit + Mockito 实践单元测试!
  11. 前端学习(1604):脚手架props与state
  12. ES2020的新特性解读
  13. QString与std::string 有中文时的转换操作
  14. 中国大陆IP过滤器-Java实现
  15. 二维傅里叶变换的矩阵表示
  16. 牛逼的Python库MoviePy!利用Python自动剪辑tiktok视频!
  17. WalletContract区块钱包链接到web3js
  18. 【MMDetection3D】MVXNet踩坑笔记
  19. 鼠标可拖动的浮动层效果
  20. 网络设备互联技术· 『1』

热门文章

  1. Win32多线程编程(3) — 线程同步与通信
  2. 基于嗅探原理的原始套接字木马
  3. 计算机网络 | 网络基础 :网络协议,协议分层,数据封装与分用,地址管理,字节序
  4. C++ STL : 模拟实现STL中的string类
  5. linux问题排查常用命令详解
  6. Android Databinding学习
  7. 程序员35岁破局之路
  8. WebRTC视频数据流程分析
  9. 倒计时5天:5G还是6G?
  10. 《视频直播技术详解》系列之七:现代播放器原理