在C++中实现共享内存管理器

Cha*_*dra 2 c++ linux android shared-memory

我已经实现了一个简单的共享记忆代码,它分散在两个进程中(1个用作编写器,其他用作读取器).但是我想管理这个SHM代码(就像内存管理器一样),它独立于任何读写器进程.通过简单地给出一些钩子/指针,任何人都可以建议我这样做.或相关信息的任何相关代码或链接?还有一个我可以使用Zygote流程来实现它吗?

Yan*_*min 5

应用程序无法使用现代操作系统上的普通指针"共享"其内存.这需要操作系统的帮助,并且高度依赖于所讨论的操作系统.例如,在Linux上,最好的选择是使用SysV共享内存.

确保您了解多进程共享内存的开销,并问自己是否只使用线程是不够的.在大多数情况下,线程就足够了,或者如果不是,你应该重新思考你的模型使用消息传递/共享任何模型.

  • 我非常不同意SysV共享内存.POSIX共享内存(在/ dev/shm中创建一个文件,应该是内存支持的文件系统)并且mmaping它是Linux上的首选方法.它的界面更简单,冲突的可能性更低(因为它是用字符串命名的,与SysV IPC的整数相比),如果在打开文件后取消链接文件,你可以确保内核将清理它(你不能为SysV IPC做类似的事情). (3认同)