У меня есть Boost.MultiIndex большой массив около 10Gb. Чтобы уменьшить чтение, я подумал, что должен быть способ сохранить данные в памяти, а другие клиентские программы смогут читать и анализировать их.Boost.MultiIndex: Есть ли способ совместного использования объекта между двумя процессами?
Что такое правильный способ его организовать?
массив выглядит следующим образом:
struct particleID
{
int ID;// real ID for particle from Gadget2 file "ID" block
unsigned int IDf;// postition in the file
particleID(int id,const unsigned int idf):ID(id),IDf(idf){}
bool operator<(const particleID& p)const { return ID<p.ID;}
unsigned int getByGID()const {return (ID&0x0FFF);};
};
struct ID{};
struct IDf{};
struct IDg{};
typedef multi_index_container<
particleID,
indexed_by<
ordered_unique<
tag<IDf>, BOOST_MULTI_INDEX_MEMBER(particleID,unsigned int,IDf)>,
ordered_non_unique<
tag<ID>,BOOST_MULTI_INDEX_MEMBER(particleID,int,ID)>,
ordered_non_unique<
tag<IDg>,BOOST_MULTI_INDEX_CONST_MEM_FUN(particleID,unsigned int,getByGID)>
>
> particlesID_set;
Любые идеи приветствуются.
вид сэр Arman.
EDIT: ОЗУ и количество ядер не ограничены. В настоящее время у меня есть 16Gb и 8cores.
Update
Тот же вопрос я задавал в Boost.Users форуме я получил ответ от Хоакина M Лопеса Муньоса (разработчик Boost.MultiIndex). Aswer is Да. Можно разделить multi_index между процессами с помощью Boost.Interprocess. Более подробную информацию вы можете найти в: this link
Ops, поток, на который вы ссылались, был удален ... – Pietro
@Pietro: Это действительно странно :( – Arman