J'ai un grand tableau de Boost.MultiIndex environ 10Gb. Afin de réduire la lecture, je pensais qu'il devrait y avoir un moyen de garder les données dans la mémoire et d'autres programmes clients seront en mesure de lire et d'analyser.Boost.MultiIndex: existe-t-il un moyen de partager un objet entre deux processus?
Quelle est la bonne façon de l'organiser?
Le tableau ressemble à:
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;
Toutes les idées sont les bienvenues.
Cordialement Arman.
EDIT: La RAM et le nombre de cœurs ne sont pas limités. Actuellement, j'ai un 16Gb et 8cores.
Mise à jour
La même question que je posais dans le forum de Boost.Users Je suis une réponse de Joaquín López Muñoz M (développeur de Boost.MultiIndex). L'aswer est Oui. On peut partager le multi_index entre les processus en utilisant Boost.Interprocess. Pour plus de détails, vous pouvez voir dans this link
Ops, le fil de votre lien pointe à été supprimé ... – Pietro
@Pietro: Il est vraiment étrange :( – Arman