【发布时间】:2011-10-29 18:07:43
【问题描述】:
在我的应用程序中,我有一个分叉出一个子进程的进程,比如 child1,这个子进程在磁盘上写入一个巨大的二进制文件并退出。然后父进程派生出另一个子进程 child2,该子进程读取这个巨大的文件以进行进一步处理。
文件转储和重新加载使我的应用程序变慢,我正在考虑可能 完全避免磁盘 I/O 的方法。我确定的可能方式是 ram-disk 或 tmpfs。 我可以在我的应用程序中以某种方式实现 ram-disk 或 tmpfs 吗?或者有没有其他的 通过这种方式我可以完全避免磁盘 I/O 并可靠地跨进程发送数据。
【问题讨论】:
-
为了正确看待更多事情,父进程实际上分叉了3-4个写入磁盘的子进程,然后这些文件被后续子进程读取。所有这些子进程不同时存在,在将数据写入磁盘后退出。
-
由于涉及到很多流程,我认为设置管道可能会变得过于复杂和脆弱。相反,如果我可以构建一个封装的 API 来模拟我需要的一些磁盘的磁盘,那就太酷了!
-
为什么要分叉?使用线程并将文件保存在内存中。