mi chiedevo come condividere un ricordo tra i diversi moduli di programma - consente di dire, ho un ricorso principale (exe), e poi alcuni moduli (dll). Entrambi collegano alla stessa libreria statica. Questa libreria statica avrà qualche manager, che fornisce vari servizi. Quello che mi piacerebbe ottenere, è avere questo gestore condiviso tra tutti i moduli dell'applicazione, e farlo in modo trasparente durante l'inizializzazione della libreria. Tra i processi potrei usare la memoria condivisa, ma voglio che questo sia condiviso solo nel processo corrente. Potresti pensare ad un modo multipiattaforma per fare questo? Possibilmente usando le librerie di boost, se forniscono alcuni servizi per farlo.condivisione della memoria tra i moduli
unica soluzione che viene in mente in questo momento, è quello di utilizzare libreria condivisa del rispettivo sistema operativo, che tutti gli altri moduli si collegherà a in fase di esecuzione, e hanno salvato il manager lì.
EDIT: chiarire che cosa ho effettivamente bisogno:
- Ho bisogno di scoprire, se il gestore condiviso è già stato creato (le risposte di seguito già previsti alcuni modi per farlo)
- Prendi il puntatore al gestore, se esiste, oppure Imposta il puntatore da qualche parte sull'oggetto gestore appena creato.
Dato che si tratta di un singolo processo, in che modo si differenzia da un normale schema di singleton? – sdg
È in effetti un singleton, il problema è come implementarlo, quindi sarà condiviso tra diverse librerie condivise. –
All'interno dello stesso processo, qualsiasi modulo può accedere a variabili globali esterne senza alcuna restrizione. – 9dan