命名管道(fifo)有多贵?

时间:2014-09-08 09:56:49

标签: shell synchronization named-pipes children

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果读取器太慢,可以停止写入线程的管道。但这可能就是你想要的。

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

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