繁体   English   中英

C ++-在多个进程中使用共享内存

[英]c++ - using shared memory with multiple processes

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

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

我想到的第一件事是这些过程之间的同步。 实际上,要求是在这些进程中的任何一个愿意访问该对象时锁定共享内存,但是由于资源是在那些程序的范围之外定义的,该怎么办?

您能否先告诉我这个要求是否已经隐式实现到那些类中了? 如果不能,请详细说明如何实现这一目标?

您能否先告诉我这个要求是否已经隐式实现到那些类中?

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

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

您需要一个互斥锁 您的问题看起来像是读者-作家的问题,因此upgradable_mutex可能是更好的解决方案,因为它支持共享的读取锁和排他的写入锁。 但是您可能会发现boost :: interprocess中的其他同步原语也很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM