Geheugenmapping-bestanden gebruiken virtueel geheugen om bestanden toe te wijzen op de adresruimte van het proces, waarna het proces het bestand manipuleert net zoals het adres in de procesruimte, zoals het gebruik van memcpy en andere geheugenoperatiefuncties in de C-taal. Deze methode kan goed worden gebruikt in situaties waarin een bestand of een groot bestand vaak verwerkt moet worden, en de IO-verwerkingsefficiëntie hoger is dan die van gewone IO Gedeeld geheugen is een speciaal geval van geheugen-gemapte bestanden, waarbij een stuk geheugen wordt toegewezen in plaats van een bestand op de schijf. Het onderwerp gedeeld geheugen is Proces, en het besturingssysteem wijst standaard een geheugenruimte toe aan elk proces, waarbij elk proces alleen toegang krijgt tot een geheugen dat door het besturingssysteem is toegewezen, maar niet aan andere processen. En soms moet je hetzelfde geheugen tussen verschillende processen benaderen, wat moet je dan doen? Het besturingssysteem biedt een API om toegang te creëren tot gedeeld geheugen, en processen die geheugen moeten delen kunnen via deze set gedefinieerde API's toegang krijgen tot het geheugen dat door meerdere processen gedeeld wordt, en elk proces benadert dit geheugen alsof het een bestand op een harde schijf zou benaderen. De .Net 4.0 introduceert de System.IO. MemoryMappedFiles-naamruimte, een klasse die de Windows Shared Memory-gerelateerde API's encapsuleert, waardoor het voor .Net-programmeurs gemakkelijker wordt om geheugenmappingbestanden te gebruiken. Gebruik gedeeld geheugen in C#. De volgende code voor App1 laat de gebruiker een regel tekst invoeren in gedeeld geheugen; App2 ververst de console voortdurend en geeft de nieuwste gedeelde geheugeninhoud weer terug; App3 implementeert dezelfde functies als App2, maar de leesmethode is anders.
Er werden twee methoden gebruikt om de gegevens te lezen. Aangezien communicatie tussen processen voorheen zelden werd gebruikt, is deze methode slechts een voorlopig begrip. Het programma is te rudimentair, en er zijn veel dingen die niet worden beoordeeld. Bijvoorbeeld, hoe je een gedeeld geheugen aanmaakt, hoe je het ophaalt en verwijdert, enzovoort.
|