【发布时间】:2020-08-24 06:46:29
【问题描述】:
我实际上是在尝试在 C++ 中提高线程、进程和共享内存,但实际上我的进程间通信卡住了。
我决定使用消息队列,因为我在过去的项目中已经使用了一些,但从未使用过多个进程。
这是我的问题,我无法从不同的进程获取注册事件。我认为在共享内存段中初始化我的消息队列可以解决问题,但我不知道如何“强制”我的类的新实例在我的共享内存段中
因为我从 C++ 中的共享内存开始,所以我使用 boost Simple Exemple
理想情况下,我想要的是这样的:
int main (void)
{
shared_memory_object shm (open_or_create, "MySharedMemory", read_write);
// initialise shm using boost Simple Exemple
shmPtr = region.get_address();
// initialise message queue named msgQueue in my shared memory segment
msgQueuePtr = &msgQueue;
}
最后,shmPtr 将等于 msgQueuePtr。
任何帮助将不胜感激。
【问题讨论】:
-
查看新的展示位置
-
共享内存的常见问题是你不能存储指针,因为两个进程的地址空间会不同。因此,一个进程中的有效指针将是另一个进程中的无效指针。
-
@MikeVine Boost Interprocess 的重点是隐藏这些机制
-
好的@MikeVine 我会检查的。谢谢
标签: c++ boost ipc shared-memory