由于我工作的政策,我无法使用高于 1.33.1 的 Boost 版本,也无法使用高于 4.1.2 的 GCC 版本。是的,这是垃圾,但我对此无能为力。Boost 1.33.1 不包含进程间库。
也就是说,我的一个项目需要在共享内存中放置一个std::map
(或更可能是一个)。std::unordered_map
当进程由单个进程(“服务器”)加载并由许多其他进程读取时,它只被写入/修改一次。我以前没有做过共享内存 IPC,所以这对我来说是一个相当新的领域。我看了看,shmget()
但似乎我不能继续使用相同的共享内存密钥进行分配(我认为 STL 容器分配器需要)。
是否还有其他使用共享内存的 NON-BOOST STL 分配器?
编辑:这已经完成了。Dobbs 博士早在 2003 年就有一篇关于如何做到这一点的文章,我开始将其用作参考。但是,代码列表不完整,指向它们的链接重定向到主站点。
编辑编辑:我不只是重写 Boost.Interprocess 的唯一原因是因为涉及的代码量。我只是想知道是否有专门针对 POSIX 共享内存的相对简短和简洁的东西,我可以从头开始重写,因为网络之间的数据传输也需要经过多天的审批流程......