我的问题是关于使用Boost.Interprocess,在单个写入器进程和多个读取器进程的上下文中增加内存映射区域。 使用作者的managed_mapped_file::grow
是否可以,假设读者不需要更新地图尺寸的更改是可以接受的?我的假设是,读者的地图将保持有效,然后当我需要他们从作者处获取最新更改时,我可以用更新的大小重新映射读者。它是否正确?Growing Boost.Interprocess内存映射文件与单个写入器
文档的Growing managed segments部分表示:
一旦管理的段中创建管理的段不能生长。这个限制并不容易解决:每个连接到被管理部分的进程都需要停止,并通知新的大小,他们需要重新映射被管理部分并继续工作。 [...]
这让我觉得我可以grow
只要我很好,读者不马上更新。然而,文件继续说:
另一方面,Boost.Interprocess提供离线分段增长。这是什么意思?如果没有进程映射受管段,则可以扩展段。如果应用程序可以找到一个没有附加进程的时刻,它可以增长或缩小以适应被管理的细分市场。
managed_mapped_file
也提供了类似的功能来增长或管理文件。请记住,在执行增长/缩小过程时,不应该修改文件/共享内存。否则,被管段将被损坏。
这让我觉得我不能做我想做的事,但我不明白为什么它不起作用。
你想谈谈一些关于细分管理员与共享内存的更多宠物吗?我还有几个警告,你可能想知道做出设计决定:) – sehe
是的,我非常想知道这些警告。 –
[过来](https://chat.stackoverflow.com/rooms/10/loungec)如果你有时间 – sehe