在我的应用程序中,我有一个进程分叉一个子进程,例如 child1,并且该子进程在磁盘上写入一个巨大的二进制文件并退出。然后,父进程派生出另一个子进程 child2,该子进程读取这个巨大的文件以进行进一步的处理。
文件转储和重新加载使我的应用程序变慢,我正在考虑可能的
完全避免磁盘 I/O 的方法。我已经确定的可能方法是 ram-disk 或 tmpfs。
我可以以某种方式从我的应用程序中实现 ram-disk 或 tmpfs 吗?或者还有其他的吗
通过这种方式我可以完全避免磁盘 I/O 并可靠地跨进程发送数据。
在分叉之前创建一个匿名共享内存区域,然后所有子进程都可以在分叉后使用它:
char *shared = mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,-1,0);
请注意,共享内存时需要一些同步机制。实现此目的的一种方法是将互斥锁或信号量放入共享内存区域。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)