我需要在共享内存中放置一个STL映射。还有多个进程访问映射。有关它如何完成的任何指示?
我已查看此链接。但需要一种更简单的方法。 Map in Shared memory
答案 0 :(得分:0)
为此,您需要使用将从共享内存区域分配的自定义分配器,以便映射节点全部位于共享内存中,因此分配器的pointer
类型不仅仅是一个原始指针,但当它被映射到不同进程中的不同地址时,可以引用共享内存区域。
您还需要std::map
实施正确使用分配器的pointer
类型无处不在它需要使用指针,这个isn't guaranteed by the standard
目前最简单的方法是使用Boost.Interprocess,它为共享内存提供了一个很好的API,并提供了与它一起正常工作的分配器和容器。