一个命名管道(fifo)的成本有多高?

3
我启动了许多进程,我需要每个进程都等待输入。创建每个进程的命名管道是一个好主意吗?或者我应该考虑其他同步方式?
我知道为每个独立进程创建普通文件会非常糟糕,因为进程会受到硬盘的拖累。但是命名管道在这方面如何比较呢?它们像信号一样快还是像普通文件一样慢?
2个回答

1

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

在证明它是瓶颈之前,我不会避免使用真正的文件。由于操作系统将小写入文件的缓冲区保存在内存中,直到尝试读取文件或缓冲区填满,因此您可能不会因为硬盘速度而经历任何I/O延迟。


0

使用管道,如果读取者太慢,您的写入线程可以停止。但这可能是您想要的。

如果您觉得磁盘写入可能很慢,您可以为命名管道使用tmpfs(一种在RAM中的文件系统)。 (这仅加速对管道名称的访问)无论如何,大多数磁盘操作都会被缓存。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接