命名管道(fifo)有多贵?

Posted

技术标签:

【中文标题】命名管道(fifo)有多贵?【英文标题】:How expensive is a named pipe (fifo)? 【发布时间】:2014-09-08 09:56:49 【问题描述】:

我产生了许多进程,我需要每个进程等待输入。为每个进程创建一个命名管道是个好主意吗?还是我应该考虑其他一些同步方式?

我确信为每个单独的进程制作一个普通文件会非常糟糕,因为这些进程会因硬盘而变慢。但是命名管道在这方面如何比较?它们是和信号一样快还是和普通文件一样慢?

【问题讨论】:

【参考方案1】:

命名管道只是内存缓冲区的文件系统条目,因此访问速度应该足够快。

在您证明它是一个瓶颈之前,我不会避免使用真实文件。由于操作系统会缓冲对内存中文件的少量写入,直到尝试读取文件或缓冲区填满为止,因此您可能不会因为硬盘驱动器的速度而遇到任何 I/O 延迟。

【讨论】:

【参考方案2】:

如果阅读器速度太慢,可以使用管道停止编写线程。但这可能是你想要的。

如果您发现磁盘写入速度可能很慢,您可以为命名管道使用 tmpfs(RAM 中的文件系统)。 (这只会加速访问您的管道名称)无论如何,大多数磁盘操作都是缓存的。

也许您可以为您的设计考虑 d-bus(不应该更快或更慢): https://en.wikipedia.org/wiki/D-Bus

【讨论】:

以上是关于命名管道(fifo)有多贵?的主要内容,如果未能解决你的问题,请参考以下文章

进程间通信--FIFO(命名管道)

Linux系统编程——进程间通信:命名管道(FIFO)

IPC - 命名管道(fifo)- 使用

简述Linux进程间通信之命名管道FIFO

IPC - 命名管道(fifo)- 使用

IPC - 命名管道(fifo)- 使用