Me preguntaba cómo compartir algo de memoria entre diferentes módulos de programa, digamos, tengo una aplicación principal (exe) y luego algún módulo (dll). Ambos se vinculan a la misma biblioteca estática. Esta biblioteca estática tendrá un administrador que brinda varios servicios. Lo que me gustaría lograr es tener este administrador compartido entre todos los módulos de la aplicación y hacerlo de forma transparente durante la inicialización de la biblioteca. Entre los procesos podría usar la memoria compartida, pero quiero que esto se comparta solo en el proceso actual. ¿Podría pensar en alguna forma de plataforma cruzada para hacer esto? Posiblemente usando bibliotecas de impulso, si proporcionan algunas facilidades para hacer esto.Compartiendo memoria entre módulos
La única solución en la que puedo pensar ahora, es usar la biblioteca compartida del sistema operativo respectivo, que todos los demás módulos vincularán en el tiempo de ejecución, y que el administrador guarde allí.
EDIT: para aclarar lo que realmente se necesita:
- necesito para averiguar si ya se ha creado el gestor compartido (las respuestas a continuación ya previstas algunas maneras de hacer eso)
- Consigue la puntero al administrador, si existe, o establecer el puntero en algún lugar para el objeto administrador recientemente creado.
Dado que este es un proceso único, ¿cómo es esto diferente de un patrón de singleton normal? – sdg
De hecho, es un singleton, el problema es cómo implementarlo, por lo que se compartirá entre diferentes bibliotecas compartidas. –
Dentro del mismo proceso, cualquier módulo puede acceder a variables globales externas sin ninguna restricción. – 9dan