繁体   English   中英

阅读/写入管道是一项昂贵的操作吗?

[英]Is reading/writing to a pipe an expensive operation?

作为我的Uni课程的一部分,我们已经被展示并被要求使用管道在进程之间进行通信(使用pipe()fork() )进行一些小练习。 没有问题让它工作或与概念,但在这些要求之外,我想知道用这种类型的管道写和读的效率如何?

如果我有一些值,我正在打包到一个4字节的块,是不是一次打包并写入100个值(所以400字节)?

或者,如果我每次写入4个字节,那么性能是否可比?

一次性管道400字节是否阻止接收器执行任何操作,直到写入完成为止 - 假设接收器只是尝试读取前4个字节,是否能够在写入之后但在所有400个字节完成之前执行此操作?

管道的处理方式与文件类似(当然,它们不在磁盘上)。 它们以相同的方式缓冲,并且对它们的句柄进行类似处理。 不要尝试手动缓冲管道; 它已经这样做了。 如果您真的关心它,您可以尝试两种方式并收集一些运行时间。 我建议你只需要编写4个字节的块。 除非您知道存在问题,否则不要尝试优化。

我可以告诉你一个轶事。 我曾经在一个嵌入式Linux平台的Web系统上工作过。 我们尝试使用内部通信管道,因为它们比UNIX套接字或TCP套接字快得多。 最后我们还是使用了套接字,因为它们在我们的应用程序中使用起来更简单。 (我们需要双向沟通,管道只有一种方式。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM