一起talk C栗子吧(第一百零三回:C语言实例--进程间通信大阅兵)
各位看官们,大家好,上一回中咱们说的是使用信号量进行进程间同步与互斥的例子,这一回咱们说的例
子是:进程间通信大阅兵。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在前面的章回中介绍了多种进程间通信的方式,大家可能觉得有点杂乱的感觉,或者有各种疑问:为什么会有这么多进程间通信方式呢?这么多通信方式中哪个最好呢?其实这么多的进程间通信方式除了历史的原因外,也与技术的发展有关系。这些通信方式中不能说哪个最好,只能说哪个最适用。具体使用哪种通信方式取决于我们的编程环境。
在本章回中,我们会以阅兵的方式对这些通信方式进行总结与比较,通过阅兵来展现他们的优点,避免它们的缺点。让大家对他们有更加深刻的认识,以便在写程序的时候选择最恰当的通信方式。
参加本次阅兵的方队来自我军海陆空三大军种,他们来自五湖四海,但是为了保家卫国而走在了一起。本次参阅的方队有信号方队,管道方队,无名管道方队(相对于命令管道FIFO而而言),命名管道方队,消息队列方队,共享内存方队,信号量方队。各方队已经就绪,随时准备接受检阅。
升旗!
奏乐!
阅兵仪式正式开始!
看官们,走在阅兵方阵最前面的是信号方队。信号方队是我军历史上最悠久的部队。该部队随着Unix系统产生而产生,为Unix系统的发展做出了卓越的贡献。在Linux系统产生后,该部队也不畏险阻,挻进Linux领域,成为该领域中进程通信的主要方式之一。信号方队为我军及时传递各种信号,使我们永远走在敌人的前面,有效地压制了敌人。
接下来出场的是管道方队。管道方队披星戴月,日夜奋战,有力地保证了进程间的正常通信。他和信号方队有互补的作用,他的产生有效地解决了信号方队只能发送信号不能传递数据的缺点。他为进程间通信输送了海量数据,堪比Linux shell中的管道。
俗话说:打仗亲兄弟,上阵父子兵。现在出场的就是好比父子兵的无名管道方队。它们属于管道这个大分支,所以和前面走过去的管道方队在服装上比较类似。无名管道部队处处做好事,处处不留名,因为他们都是活雷锋。在父子进程间通信时首选无名管道部队。
伴随着嘹亮的军歌声,我们送走了无名管道方队,迎来了命名管道方队。命名管道部队也隶属于管道这个大分支。他们有郊地扩展了战场,从无名管道只能在父子进程间通信扩展到可以在任何进程间通信。是进程中最常使用的通信方式。命名管道部队的诞生,好比装备了高科技设备部队,为我军的现代化发展做出了突出的贡献,堪称现代化部队的鼻祖。
一二三四!三大管道方队的口号声还在耳边环绕,消息队列方队已经出现在我们眼前。消息队列部队是与管道部队并列的现代化部队。消息队列部队机动灵活,能适用各种做战环境。哪里需要就去哪里,是最令敌人畏惧的部队。管道部队传送的是数据流,消息队列部队传送的是数据块,而且可以自己控制消息块的大小和包装。这就是它灵活性的体现。如果说管道部队送来的是救命水,那么消息队列部队送来就是保命粮。水是液体,类似数据流;粮食是一袋一袋的,类似于一条一条的消息。进程间通信时需要看消息的类型,可以依据消息的类型来选择进程间通信的方式,进而提高通信的效率。这比如打仗,不同战场需要不同的部队,它们是一个道理。
空中飞机翱翔,地上战车滚滚。共享内存方队乘着战车来接收检阅。共享内存方队是我军中反应最快捷的部队。他们广泛使用飞机和战车来装备部队,极大地提高了部队的作战速度。神龙见首不见尾是他们一贯的作风,如果哪天发现天降神兵了,哪肯定是共享内存部队。在我们介绍的这几种进程间通信方式中,共享内存是最快的通信方式,因为它是在进程的内存中进行通信,而且它还克服了管道单向通信的缺点。
看官们,最后出场的是信号量部队,他好比部队的神经网络,能够有效地联络和指挥各个部队进行综合做战。现代战争是综合形式的战争,有了信号量部队,我们就在现代战争中掌握了主动权。进程间通信时会涉及到多个进程,使用信号量可以保证多个进程正常通信。也就是说信号量经常用来解决进程同步与互斥相关的问题。
台下传来了阵阵的欢呼声,阅兵仪式在大家的欢呼声中正式结束!
各位看官,关于进程间通信大阅兵的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。
一起talk C栗子吧(第一百零三回:C语言实例--进程间通信大阅兵)相关推荐
- 达芬奇密码 第一百零二章 第一百零三章
达芬奇密码 第一百零二章 第一百零三章[@more@] 第一百零二章 塞拉斯一瘸一拐地走进一个看不见的寂静空间里.这时薄雾已经在肯辛顿花园中弥漫开来.他跪在湿漉漉的草地上,感到有股热血正从他肋骨以下的 ...
- “约见”面试官系列之常见面试题之第一百零三篇之vue-router实现路由懒加载(建议收藏)
vue异步组件 es提案的import() webpack的require,ensure() vue异步组件技术 ==== 异步加载 vue-router配置路由 , 使用vue的异步组件技术 , 可 ...
- Baeldung Java 周评 | 第一百零五弹(关键词:如果 Java 是今天设计的、内容丰富的 Spring 会议、JPA 测试用例模版、高性能 Java 持久化、自动化订购午餐、前端五强)
开篇词 尤金的第 105 篇 Java 周评,诞生了! Spring 以及 Java 相关 如果 Java 是今天设计的:可同步接口 [jooq.org] 关于 Java 中 "可能是什么& ...
- 第一百零九期:双十一光棍节调试一个商城必备功能,Java Springboot开源秒杀系统
秒杀系统在电商系统中是非常重要的,不是因为秒杀这个功能重要,而是因为秒杀提现的是一个系统的并发负载能力.例如阿里巴巴或者京东,每年的双十一的峰值,其实就是下一年的常态,双十一各项技术指标,已经作为这些 ...
- 一起talk C栗子吧(第一百六十七回:C语言实例--控制终端字符颜色)
各位看官们,大家好,上一回中咱们说的是大小写字符转换的例子,这一回咱们说的例子是:控制终端字符颜色 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在Linux终端中使用Linux命 ...
- 第一百零二节,JavaScript函数
JavaScript函数 学习要点: 1.函数声明 2.return返回值 3.arguments对象 函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值 ...
- 一起talk C栗子吧(第一百二十三回:C语言实例--显示变量和函数的地址)
各位看官们,大家好,上一回中咱们说的是多线程的样例.这一回咱们说的样例是:显示变量和函数的地址. 闲话休提,言归正转.让我们一起talk C栗子吧! 在编敲代码时,有时候须要获取程序中变量和函数的地址 ...
- “约见”面试官系列之常见面试题之第一百零四篇之vue优点(建议收藏)
vue的优点: 1.轻量级框架 只关注视图层,是一个构建数据的视图集合,大小只有几十kb Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统 2.简单易学 国人开发,中文文档,不存在语言障 ...
- 第一百零五期:5年前,跳槽涨薪,你笑了,5年后,跳槽降薪,你慌了!
去年,我在年度绩效面谈中与某中年技术男就 "从测试转向产品经理" 的这个话题上进行了一些探讨与分析. 作者:王晔倞 图片来自 Pexels 或许是因为分析的角度比较客观.真实,再加 ...
- 第一百零四期:搞清这些陷阱,NULL和三值逻辑再也不作妖
NULL 用于表示缺失的值或遗漏的未知数据,不是某种具体类型的值.数据表中的 NULL 值表示该值所处的字段为空,值为 NULL 的字段没有值,尤其要明白的是:NULL 值与 0 或者空字符串是不同的 ...
最新文章
- 使用NSRunloop等待异步任务完成
- SAP smartforms之Zebra print control language
- java中script类_在Scripting java(javax.script)中导入一个类
- Twitter Snowflake
- verilog扰码器设计及仿真
- Spring classPath:用法
- Java String的内存机制
- 【大数据部落】R语言基于决策树的银行信贷风险预警模型
- noip模拟9 达哥随单题
- 威联通_AMD YES!威联通高性价比9盘位TS-963N 5GbE NAS体验
- 谁谋杀了我们的游戏?转自 斗战神制作人-Yocar
- siebel基础配置
- html漂浮图片代码关闭,带关闭功能的漂浮图片代码
- 计算机输入输出方式的应用,[原创]计算机组成原理之输入输出系统题目及解答...
- Windows上搭建安卓的JAVA开发环境(Ecli...
- 微信第三方网页关闭当前页面回到微信对话窗口
- 会议oa之排座和送审
- Excel VBA 中有关使用 UBound + CurrentRegion 提示类型不匹配的问题及解决方案
- 国家认证的Python技术工程师有什么能力要求?
- 江苏省一级计算机ms,计算机一级六大MS题型介绍