2011-08-16 2 views
7

J'essaie d'utiliser un segment de type mmap pour allouer des objets sur des conteneurs stl, pour cela j'utilise boost :: interprocess qui fournit des mappages de mémoire, des allocateurs et de la mémoire anonyme support de cartographie.
Un peu comme thisboost :: interprocesseur de mémoire interprocess sur segment anonyme

Mon problème est que la fonction anonymous_shared_memoryhere rendement quelque chose qui ressemble fichier moitié cartographié et de la mémoire partagée moitié (sens avec mmap :)) et bien que les deux styles de travail avec interprocess allocators celui-ci ressemble à son manque un gestionnaire de segments qui effectue l'allocation de segments réelle.
Comme il renvoie un mapped_region de haut niveau déjà mappé dans le processus, mais sans gestionnaire et aucun moyen que je peux voir pour accrocher un segment_manager.

+0

Si 'anonymous_shared_memory' n'est pas conforme au protocole attendu par les allocateurs interprocess, cela ressemble à un bogue. Je vous recommande d'essayer de le signaler. –

Répondre

3

Un mapped_region est un objet de bas à moyen niveau, et représente littéralement juste la mémoire. Managed shared memory, cependant

est une classe avancée qui combine un objet de mémoire partagée et une région cartographiée qui couvre tous les objets de mémoire partagée,

il est la mémoire gérée possédant les segment_manager.

Étant donné que vous souhaitez utiliser anonymous_shared_memory, d'abord vous obtiendrez le memory_region comme dans l'exemple, vous pouvez ensuite utiliser le placement new pour mettre un segment_manager à de celui-ci. Son constructor prend la taille du segment de mémoire dans lequel il est construit. Je ne sais pas si cela inclut la taille du gestionnaire, bien que je soupçonne qu'il est inclus.

+0

@Arkaitz, avez-vous essayé? Voulez-vous que je mette du code pour ça? – rcollyer

+0

s'il vous plaît faire; Ce serait utile! –

+0

@ EiyrioüvonKauyf ça fait bien longtemps que j'ai regardé ça, donc si je ne publie pas de code ce week-end, piquez-moi à nouveau. – rcollyer

Questions connexes