c ++ - 使用具有多个进程的共享内存

时间:2016-09-23 17:19:45

标签: c++ boost synchronization

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

现在,我想扩展程序,因此共享内存可以从几个独立的进程访问,不仅可以读取,还可以更改数据。

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

请您先告诉我这个要求是否已经隐含地实施到这些类中?如果没有,请详细说明如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

  

请您先告诉我这项要求是否已经实施   隐含地进入这些类?

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

  

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

您需要mutex。您的问题看起来像是reader-writer问题,因此upgradable_mutex可以是更好的解决方案,因为它支持可共享的读锁定和独占写锁定。但是你可能会发现boost :: interprocess的其他同步原语也很有用。