我想使用mmap在子进程之间共享不同类型的多个全局变量。我是否必须为每种类型创建不同的mmap,还是可以创建一个将它们全部保存为mmap指针的结构?
答案 0 :(得分:3)
使用结构是个好主意。 mmap使用CPU的分段硬件将文件映射到内存中,并且该硬件与大小至少一个虚拟内存页面的内存块一起工作;所以当你可以使用它们时使用其中许多是浪费和慢。
如果要在映射区域中存储任何指针,请检查您的硬件和对mmap()的调用是否可以将文件映射到所有进程中的同一地址。除非您使用MAP_FIXED强制解决问题,否则无法保证在所有进程中分配相同的地址。
如果您之前没有编写并发应用程序,那么您可能需要学习很多东西。内存读写不一定是原子的,有序的或一致的。使用volatile。使用信号量。期待痛苦。