2016-09-23 162 views
0

我正在使用Boost,特别是shared_memory_objectmapped_region来实现基本的IPC(共享内存)。C++ - 使用多进程共享内存

现在,我想扩展程序,所以共享内存可以从几个分离的进程访问,不仅可以读取,而且可以更改数据。

我想到的第一件事是这些过程之间的同步。实际上,当任何这些进程愿意访问这个对象时,需要锁定共享内存,但是由于资源被定义在这些程序的范围之外......怎么能这样做呢!

你能先请告诉我,这个需求是否已经隐式实现到这些类中?如果没有,请详细说明如何实现这一目标?

回答

0

您能先请告诉我,这个要求是否已经将 隐含地实施到这些类中?

不,共享内存中没有内置同步,因为在内存级别上,不清楚它上面的哪些操作组必须是原子级的。但是boost :: interprocess中可以使用同步原语。

如果没有,请详细说明如何实现此目标?

您需要一个mutex。你的问题看起来像读写器问题,所以upgradable_mutex可能是更好的解决方案,因为它支持可共享读锁和独占写锁。但是你也可以从boost :: interprocess中找到其他同步原语。