C++ - 使用多进程共享内存
问题描述:
我正在使用Boost,特别是shared_memory_object
和mapped_region
来实现基本的IPC(共享内存)。C++ - 使用多进程共享内存
现在,我想扩展程序,所以共享内存可以从几个分离的进程访问,不仅可以读取,而且可以更改数据。
我想到的第一件事是这些过程之间的同步。实际上,当任何这些进程愿意访问这个对象时,需要锁定共享内存,但是由于资源被定义在这些程序的范围之外......怎么能这样做呢!
你能先请告诉我,这个需求是否已经隐式实现到这些类中?如果没有,请详细说明如何实现这一目标?
答
您能先请告诉我,这个要求是否已经将 隐含地实施到这些类中?
不,共享内存中没有内置同步,因为在内存级别上,不清楚它上面的哪些操作组必须是原子级的。但是boost :: interprocess中可以使用同步原语。
如果没有,请详细说明如何实现此目标?
您需要一个mutex。你的问题看起来像读写器问题,所以upgradable_mutex可能是更好的解决方案,因为它支持可共享读锁和独占写锁。但是你也可以从boost :: interprocess中找到其他同步原语。