unix中共享内存和管道的区别?

时间:2010-09-09 11:21:39

标签: unix terminology

unix编程中共享内存管道的主要区别是什么?

2 个答案:

答案 0 :(得分:3)

取自this article

(未命名)管道

  • 可以在阻止和切换之间切换 非阻塞模式
  • 完成后不必释放它们
  • 自动继承 儿童
  • 必须以线性方式读写 时尚

共享内存

  • 可以存储结构
  • 永远不会阻止 - 积极
  • 可以读取多个程序或 根据需要写信给
  • 永远不会阻止 - 否定:必须使用 信号量或你自己的旋锁
  • 它有可能不被释放 即使所有程序退出

答案 1 :(得分:0)

共享内存与管道-

内核-

一旦由内核设置了共享内存,就不再需要内核来进行黑白通讯,而在Pipe中,数据被缓存在内核空间中,并且每次访问都需要系统调用。在这里,共享内存比管道更快。这是管道的主要缺点,因为IPC对于提高计算速度非常重要。

通讯

共享内存-双向,而管道(未命名管道)-单向。

可靠

共享内存-不太可靠(数据混合),而管道由于数据被缓冲且受内核控制而更加可靠。

希望你喜欢它。