0
我需要在共享内存中放置STL映射。还有多个映射的进程访问。任何指向它是如何完成的?共享内存中的C++ STL映射
我已经检查过这个链接。但需要一个更简单的方法。 Map in Shared memory
我需要在共享内存中放置STL映射。还有多个映射的进程访问。任何指向它是如何完成的?共享内存中的C++ STL映射
我已经检查过这个链接。但需要一个更简单的方法。 Map in Shared memory
对于这个工作,你需要使用一个自定义的分配器将从共享内存区域分配,使地图节点都在共享内存中,从而使pointer
型分配器的不只是一个原始指针,但可以在映射到不同进程中的不同地址时引用共享内存区域。
您还需要你的std::map
实现正确使用分配的pointer
型到处它需要使用一个指针,而这个isn't guaranteed by the standard。
当前最简单的方法是使用Boost.Interprocess,它为共享内存提供了一个很好的API,并提供了与它一起正常工作的分配器和容器。
使用增强,因为这是一个有点痛苦的实现。或者你受限于你可以使用的库? – Joe
不要。 STL实现的映射不太可能是二进制稳定的。 –
@BillyONeal,假设你指的是ABI的稳定性,并且即使假定这是真的,当然如果所有进程都使用相同的编译器版本而不是问题? (还有其他问题,但我不认为这是其中的一个!) –