在我的程序中,我使用fork创建了一些子进程,我想在它们之间共享std :: vector。 我知道mmap,我尝试使用自己的分配器,它使用mmap。
我的分配器类在这里: https://gist.github.com/ADKosm/798bf4caebbc5e087d86
如果我使用此分配器创建vector<int>
:std::vector<int, mmap_allocator<int> >
- 所有过程都可以操纵此向量的副本。
但是如果我尝试使用std::vector<std::string, mmap_allocator<std::string> >
- 每个进程只能访问它的容器副本。
我也尝试使用
#define shared_string std::basic_string<char, std::char_traits<char>, mmap_allocator<char> >
std::vector<shared_string, mmap_allocator<shared_string> >
但它也不起作用。
如何在forked proccesses之间共享此容器?
PS。抱歉错误 - 我只是在学习英语
答案 0 :(得分:1)
您还需要将分配器提供给std :: string。由于std :: string是std :: basic_string的typedef,所以你实际上必须使用std::basic_string<char, mmap_allocator<char> >
。