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