I file di mappatura di memoria utilizzano la memoria virtuale per mappare i file allo spazio di indirizzamento del processo, dopodiché il processo manipola il file proprio come l'indirizzo nello spazio di processo, ad esempio usando memcpy e altre funzioni operative di memoria nel linguaggio C. Questo metodo può essere utilizzato bene in situazioni in cui un file o un file grande deve essere elaborato frequentemente, e l'efficienza di elaborazione IO è superiore a quella di un IO ordinario La memoria condivisa è un caso particolare di file mappati in memoria, che mappano un pezzo di memoria invece di un file su disco. L'oggetto della memoria condivisa è Processo, e il sistema operativo assegna di default uno spazio di memoria a ciascun processo, e ogni processo può accedere solo a un pezzo di memoria assegnato dal sistema operativo, ma non ad altri processi. E a volte devi accedere allo stesso pezzo di memoria tra processi diversi, cosa dovresti fare? Il sistema operativo fornisce un'API per creare accesso alla memoria condivisa, e i processi che necessitano di condividere la memoria possono accedere alla memoria condivisa da più processi tramite questo insieme di API definite, e ogni processo accede a questa memoria come se stesse accedendo a un file su un hard disk. Il .Net 4.0 introduce il System.IO. MemoryMappedFiles, una classe che racchiude le API relative alla memoria condivisa di Windows, facilitando l'uso dei file di mappatura di memoria per i programmatori .Net. Usa la memoria condivisa in C#. Il seguente codice per App1 permette all'utente di inserire una riga di testo nella memoria condivisa; App2 aggiorna costantemente la console e mostra gli ultimi contenuti di memoria condivisa; App3 implementa le stesse funzioni di App2, ma il metodo di lettura è diverso.
Sono stati utilizzati due metodi per leggere i dati. Poiché la comunicazione tra processi era raramente utilizzata prima, questo metodo è solo una comprensione preliminare. Il programma è troppo rudimentale e ci sono molte cose che non vengono giudicate. Ad esempio, come creare una memoria condivisa, come recuperarla ed eliminarla, ecc.
|