es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Creando un asignador que utiliza múltiples segmentos de memoria compartida administrada en boost.

Con el fin de evitar el crecimiento de un segmento de memoria compartida gestionada sin desmapear y remapear todas las regiones anteriores, quiero crear un asignador que cree un nuevo segmento de memoria compartida gestionada cada vez que no haya suficiente espacio en los segmentos anteriores. He investigado los “allocators” de nodos de interproceso de Boost, pero no parecen ser adecuados para este problema. ¿Existe alguna clase o utilidad en Boost que pueda ayudar con este problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una clase en boost que puede ayudar con este problema. Se llama managed_external_buffer y te permite crear un segmento de memoria compartida administrada que puede ser expandido según sea necesario. Esta clase te permite especificar un tamaño para el segmento inicial y luego agregar más memoria cuando sea necesario sin desmapear y volver a mapear todas las regiones previas.

    Para usar managed_external_buffer, necesitarás incluir el archivo de encabezado <boost interprocess/managed_external_buffer.hpp=""> y crear una instancia de la clase, especificando el tamaño inicial y otras opciones según sea necesario. Luego, puedes usar las funciones allocate() y deallocate() para asignar y liberar regiones de memoria dentro del segmento.

    En general, managed_external_buffer ofrece una solución flexible para administrar segmentos de memoria compartida que necesitan crecer de manera dinámica.

Comments are closed.