共享内存中的 C++ STL 映射
C++ STL map in shared memory
我需要在共享内存中放置一个 STL 映射。也有多个进程访问该映射。关于它是如何完成的任何指示?
我检查过这个link。但需要更简单的方法。
Map in Shared memory
为此,您需要使用自定义分配器,该分配器将从共享内存区域进行分配,以便映射节点都在共享内存中,并且分配器的 pointer
类型是不仅仅是原始指针,当它映射到不同进程中的不同地址时,还可以引用共享内存区域。
您还需要 std::map
实现才能正确使用分配器的 pointer
类型 任何地方 它都需要使用指针,而这个 isn't guaranteed by the standard.
目前执行此操作的最简单方法是使用 Boost.Interprocess,它为共享内存提供了一个很好的 API,并且还提供了可以正确使用它的分配器和容器。
我需要在共享内存中放置一个 STL 映射。也有多个进程访问该映射。关于它是如何完成的任何指示?
我检查过这个link。但需要更简单的方法。 Map in Shared memory
为此,您需要使用自定义分配器,该分配器将从共享内存区域进行分配,以便映射节点都在共享内存中,并且分配器的 pointer
类型是不仅仅是原始指针,当它映射到不同进程中的不同地址时,还可以引用共享内存区域。
您还需要 std::map
实现才能正确使用分配器的 pointer
类型 任何地方 它都需要使用指针,而这个 isn't guaranteed by the standard.
目前执行此操作的最简单方法是使用 Boost.Interprocess,它为共享内存提供了一个很好的 API,并且还提供了可以正确使用它的分配器和容器。