各位看官们,大家好,上一回中咱们说的是使用信号量进行进程间同步与互斥的例子,这一回咱们说的例
子是:进程间通信大阅兵。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,我们在前面的章回中介绍了多种进程间通信的方式,大家可能觉得有点杂乱的感觉,或者有各种疑问:为什么会有这么多进程间通信方式呢?这么多通信方式中哪个最好呢?其实这么多的进程间通信方式除了历史的原因外,也与技术的发展有关系。这些通信方式中不能说哪个最好,只能说哪个最适用。具体使用哪种通信方式取决于我们的编程环境。

在本章回中,我们会以阅兵的方式对这些通信方式进行总结与比较,通过阅兵来展现他们的优点,避免它们的缺点。让大家对他们有更加深刻的认识,以便在写程序的时候选择最恰当的通信方式。

参加本次阅兵的方队来自我军海陆空三大军种,他们来自五湖四海,但是为了保家卫国而走在了一起。本次参阅的方队有信号方队,管道方队,无名管道方队(相对于命令管道FIFO而而言),命名管道方队,消息队列方队,共享内存方队,信号量方队。各方队已经就绪,随时准备接受检阅。

升旗!
奏乐!
阅兵仪式正式开始!

看官们,走在阅兵方阵最前面的是信号方队。信号方队是我军历史上最悠久的部队。该部队随着Unix系统产生而产生,为Unix系统的发展做出了卓越的贡献。在Linux系统产生后,该部队也不畏险阻,挻进Linux领域,成为该领域中进程通信的主要方式之一。信号方队为我军及时传递各种信号,使我们永远走在敌人的前面,有效地压制了敌人。

接下来出场的是管道方队。管道方队披星戴月,日夜奋战,有力地保证了进程间的正常通信。他和信号方队有互补的作用,他的产生有效地解决了信号方队只能发送信号不能传递数据的缺点。他为进程间通信输送了海量数据,堪比Linux shell中的管道。

俗话说:打仗亲兄弟,上阵父子兵。现在出场的就是好比父子兵的无名管道方队。它们属于管道这个大分支,所以和前面走过去的管道方队在服装上比较类似。无名管道部队处处做好事,处处不留名,因为他们都是活雷锋。在父子进程间通信时首选无名管道部队。

伴随着嘹亮的军歌声,我们送走了无名管道方队,迎来了命名管道方队。命名管道部队也隶属于管道这个大分支。他们有郊地扩展了战场,从无名管道只能在父子进程间通信扩展到可以在任何进程间通信。是进程中最常使用的通信方式。命名管道部队的诞生,好比装备了高科技设备部队,为我军的现代化发展做出了突出的贡献,堪称现代化部队的鼻祖。

一二三四!三大管道方队的口号声还在耳边环绕,消息队列方队已经出现在我们眼前。消息队列部队是与管道部队并列的现代化部队。消息队列部队机动灵活,能适用各种做战环境。哪里需要就去哪里,是最令敌人畏惧的部队。管道部队传送的是数据流,消息队列部队传送的是数据块,而且可以自己控制消息块的大小和包装。这就是它灵活性的体现。如果说管道部队送来的是救命水,那么消息队列部队送来就是保命粮。水是液体,类似数据流;粮食是一袋一袋的,类似于一条一条的消息。进程间通信时需要看消息的类型,可以依据消息的类型来选择进程间通信的方式,进而提高通信的效率。这比如打仗,不同战场需要不同的部队,它们是一个道理。

空中飞机翱翔,地上战车滚滚。共享内存方队乘着战车来接收检阅。共享内存方队是我军中反应最快捷的部队。他们广泛使用飞机和战车来装备部队,极大地提高了部队的作战速度。神龙见首不见尾是他们一贯的作风,如果哪天发现天降神兵了,哪肯定是共享内存部队。在我们介绍的这几种进程间通信方式中,共享内存是最快的通信方式,因为它是在进程的内存中进行通信,而且它还克服了管道单向通信的缺点。

看官们,最后出场的是信号量部队,他好比部队的神经网络,能够有效地联络和指挥各个部队进行综合做战。现代战争是综合形式的战争,有了信号量部队,我们就在现代战争中掌握了主动权。进程间通信时会涉及到多个进程,使用信号量可以保证多个进程正常通信。也就是说信号量经常用来解决进程同步与互斥相关的问题。

台下传来了阵阵的欢呼声,阅兵仪式在大家的欢呼声中正式结束!

各位看官,关于进程间通信大阅兵的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


一起talk C栗子吧(第一百零三回:C语言实例--进程间通信大阅兵)相关推荐

  1. 达芬奇密码 第一百零二章 第一百零三章

    达芬奇密码 第一百零二章 第一百零三章[@more@] 第一百零二章 塞拉斯一瘸一拐地走进一个看不见的寂静空间里.这时薄雾已经在肯辛顿花园中弥漫开来.他跪在湿漉漉的草地上,感到有股热血正从他肋骨以下的 ...

  2. “约见”面试官系列之常见面试题之第一百零三篇之vue-router实现路由懒加载(建议收藏)

    vue异步组件 es提案的import() webpack的require,ensure() vue异步组件技术 ==== 异步加载 vue-router配置路由 , 使用vue的异步组件技术 , 可 ...

  3. Baeldung Java 周评 | 第一百零五弹(关键词:如果 Java 是今天设计的、内容丰富的 Spring 会议、JPA 测试用例模版、高性能 Java 持久化、自动化订购午餐、前端五强)

    开篇词 尤金的第 105 篇 Java 周评,诞生了! Spring 以及 Java 相关 如果 Java 是今天设计的:可同步接口 [jooq.org] 关于 Java 中 "可能是什么& ...

  4. 第一百零九期:双十一光棍节调试一个商城必备功能,Java Springboot开源秒杀系统

    秒杀系统在电商系统中是非常重要的,不是因为秒杀这个功能重要,而是因为秒杀提现的是一个系统的并发负载能力.例如阿里巴巴或者京东,每年的双十一的峰值,其实就是下一年的常态,双十一各项技术指标,已经作为这些 ...

  5. 一起talk C栗子吧(第一百六十七回:C语言实例--控制终端字符颜色)

    各位看官们,大家好,上一回中咱们说的是大小写字符转换的例子,这一回咱们说的例子是:控制终端字符颜色 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在Linux终端中使用Linux命 ...

  6. 第一百零二节,JavaScript函数

    JavaScript函数 学习要点: 1.函数声明 2.return返回值 3.arguments对象 函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值 ...

  7. 一起talk C栗子吧(第一百二十三回:C语言实例--显示变量和函数的地址)

    各位看官们,大家好,上一回中咱们说的是多线程的样例.这一回咱们说的样例是:显示变量和函数的地址. 闲话休提,言归正转.让我们一起talk C栗子吧! 在编敲代码时,有时候须要获取程序中变量和函数的地址 ...

  8. “约见”面试官系列之常见面试题之第一百零四篇之vue优点(建议收藏)

    vue的优点: 1.轻量级框架 只关注视图层,是一个构建数据的视图集合,大小只有几十kb Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统 2.简单易学 国人开发,中文文档,不存在语言障 ...

  9. 第一百零五期:5年前,跳槽涨薪,你笑了,5年后,跳槽降薪,你慌了!

    去年,我在年度绩效面谈中与某中年技术男就 "从测试转向产品经理" 的这个话题上进行了一些探讨与分析. 作者:王晔倞 图片来自 Pexels 或许是因为分析的角度比较客观.真实,再加 ...

  10. 第一百零四期:搞清这些陷阱,NULL和三值逻辑再也不作妖

    NULL 用于表示缺失的值或遗漏的未知数据,不是某种具体类型的值.数据表中的 NULL 值表示该值所处的字段为空,值为 NULL 的字段没有值,尤其要明白的是:NULL 值与 0 或者空字符串是不同的 ...

最新文章

  1. 使用NSRunloop等待异步任务完成
  2. SAP smartforms之Zebra print control language
  3. java中script类_在Scripting java(javax.script)中导入一个类
  4. Twitter Snowflake
  5. verilog扰码器设计及仿真
  6. Spring classPath:用法
  7. Java String的内存机制
  8. 【大数据部落】R语言基于决策树的银行信贷风险预警模型
  9. noip模拟9 达哥随单题
  10. 威联通_AMD YES!威联通高性价比9盘位TS-963N 5GbE NAS体验
  11. 谁谋杀了我们的游戏?转自 斗战神制作人-Yocar
  12. siebel基础配置
  13. html漂浮图片代码关闭,带关闭功能的漂浮图片代码
  14. 计算机输入输出方式的应用,[原创]计算机组成原理之输入输出系统题目及解答...
  15. Windows上搭建安卓的JAVA开发环境(Ecli...
  16. 微信第三方网页关闭当前页面回到微信对话窗口
  17. 会议oa之排座和送审
  18. Excel VBA 中有关使用 UBound + CurrentRegion 提示类型不匹配的问题及解决方案
  19. 国家认证的Python技术工程师有什么能力要求?
  20. 江苏省一级计算机ms,计算机一级六大MS题型介绍

热门文章

  1. All-Pay Contests 论文定理推导(博弈论+机制设计)
  2. XML的写入_dom4j添加、删除、修改Xml文件内容
  3. 男人养肾按摩运动更可取
  4. php公告滚动源码,如何利用JavaScriptjQuery实现滚动公告栏(代码实例)
  5. IDEA Mac快捷键
  6. Python爬虫介绍
  7. 《数据库系统概论》| 第四章 数据库安全性 知识梳理
  8. esxi 环境 西数硬盘测试软件,手把手教你测试固态硬盘!硬盘测试软件大汇总
  9. 基于C# winform的操作系统课程设计:SPOOLING假脱机输入输出技术模拟
  10. Moebius中间件