共享内存中的C ++ STL映射

时间:2016-02-05 10:42:35

标签: c++ dictionary stl shared-memory

我需要在共享内存中放置一个STL映射。还有多个进程访问映射。有关它如何完成的任何指示?

我已查看此链接。但需要一种更简单的方法。 Map in Shared memory

1 个答案:

答案 0 :(得分:0)

为此,您需要使用将从共享内存区域分配的自定义分配器,以便映射节点全部位于共享内存中,因此分配器的pointer类型不仅仅是一个原始指针,但当它被映射到不同进程中的不同地址时,可以引用共享内存区域。

您还需要std::map实施正确使用分配器的pointer类型无处不在它需要使用指针,这个isn't guaranteed by the standard

目前最简单的方法是使用Boost.Interprocess,它为共享内存提供了一个很好的API,并提供了与它一起正常工作的分配器和容器。