** No-Boost ** STL asignador para memoria compartida

Debido a la política en la que trabajo, no puedo usar una versión de Boost más nueva que la 1.33.1 y no puedo usar una versión de GCC más nueva que la 4.1.2. Sí, es basura, pero no hay nada que pueda hacer al respecto. Boost 1.33.1 no contiene la biblioteca interprocess.

Dicho esto, uno de mis proyectos requiere colocar unstd::map (o más probablemente unstd::unordered_map) en la memoria compartida. Solo se escribe / modifica UNA VEZ cuando el proceso se carga por un solo proceso (el "servidor") y se lee por muchos otros procesos. No he hecho IPC de memoria compartida antes, así que este es un territorio bastante nuevo para mí. Eché un vistazo ashmget() pero parece que no puedo usar continuamente la misma clave de memoria compartida para la asignación (como supongo que sería necesaria con los asignadores de contenedores STL).

Hay algun otroNO BOOST ¿Asignadores STL que usan memoria compartida?

EDITAR: Estatiene Se ha hecho antes.El Dr. Dobbs tenía un artículo sobre cómo hacer esto exactamente en 2003, y comencé a usarlo como referencia. Sin embargo, los listados de códigos están incompletos y los enlaces a ellos se redirigen al sitio principal.

EDITAR EDITAR: La única razón por la que no reescribo Boost.Interprocess es la cantidad de código involucrado. Me preguntaba si había algo relativamente corto y conciso específicamente para la memoria compartida POSIX que pudiera reescribir desde cero, ya que las transferencias de datos entre redes también están sujetas a un proceso de aprobación de varios días ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta