Man*_*nny 5 operating-system systems-programming
我有遗留代码,出于性能原因需要改进.我的应用程序包含两个需要交换某些信息的可执行文件.在遗留代码中,一个exe写入文件(文件名作为参数传递给exe),第二个可执行文件首先检查这样的文件是否存在; 如果不存在则再次检查并在找到它时,继续读取文件的内容.这种方式在两个可执行文件之间传递信息.代码的结构方式,第二个可执行文件在第一次尝试时就成功了.
现在我必须清理这个代码,并想知道使用文件作为通信手段而不是像管道这样的进程间通信有什么缺点.打开和读取比管道更昂贵的文件?还有其他缺点吗?您认为性能下降有多重要.
遗留代码在Windows和Linux上运行.
使用文件进行 IPC 的一些问题是:
当进程 (1) 正在写入文件而进程 (2) 找到该文件时,会发生什么情况?你需要有特殊的逻辑来处理这种情况。
如果进程 (1) 希望在进程 (2) 仍在读取文件时发送另一条消息,会发生什么情况?(1) 必须以某种方式检测到该文件无法写入,并等待它可用。
在大量消息流量下,文件可能会成为瓶颈,尤其是当您仅使用单个文件进行 IPC 时。
为了确定文件 I/O 是否是您的性能瓶颈,我们需要更多地了解您正在发送的消息。它们有多大,发送的频率等等。否则很难判断它们对你的性能有什么影响(如果有的话)。
也就是说,我过去曾使用文件在进程之间传递信息,尽管通常每次都会创建新文件名,或者文件将用于传递大量数据,并且较小的 IPC 消息将用于在文件发生时发出信号准备好了。
在我看来,除非你有理由使用文件 - 例如传输大量数据 - 我更喜欢传统的 IPC 机制,例如管道、套接字等。但是你必须仔细实现它以确保一切正常两个平台。