Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 23927|Antwoord: 2

[Bron] C# implementeert procesgeheugenmapping van bestandsgedeeld geheugen

[Link kopiëren]
Geplaatst op 07-10-2017 18:51:10 | | |
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.




Vorig:.net/c# CryptoJS aes versleutelde broncode
Volgend:activemq Persistent store is Volledig
 Huisbaas| Geplaatst op 03-10-2025 16:10:57 |
.NET/C# implementeert programma singleton gebaseerd op Mutex en MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html

.NET/C# ouder-kindprocessen communiceren met MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com