栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

何时使用管道与何时使用共享内存

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

何时使用管道与何时使用共享内存

本质上,管道(无论是命名管道还是匿名管道)都像消息传递一样使用。有人将一条信息发送给收件人,收件人可以接收它。共享内存更像是发布数据-
有人将数据放入共享内存中,并且读取器(可能有很多)必须使用同步,例如通过信号量来了解存在新数据的事实,并且必须知道如何读取内存区域以查找信息。

使用管道,同步很简单,并且内置在管道机制中-
当发生有趣的事情时,您的读写将冻结和取消冻结应用程序。使用共享内存,可以更轻松地进行异步工作,并偶尔仅检查一次新数据-
但以更复杂的代码为代价。另外,您可以获得多对多的交流,但又需要更多的工作。同样,由于上述原因,基于管道的通信的调试比调试共享内存更容易。

微小的区别是fifos在文件系统中直接可见,而共享内存区域需要特殊的工具

ipcs
来进行管理,以防您例如创建共享内存段,但您的应用程序死了并且自身无法清除(信号灯和许多其他同步机制,您可能需要与共享内存一起使用)。

共享内存还使您能够更好地控制缓冲和资源使用-
在操作系统允许的范围内,由您决定分配多少内存以及如何使用它。使用管道,操作系统可以自动控制事物,因此您再次失去了一些灵活性,但省去了很多工作。

最重要的要点摘要:用于一对一通信的管道,更少的编码和让OS处理的事情,用于多对多的共享内存,对事物的更多手动控制,但以更多的工作和更困难的调试为代价。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号