Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 23927|Răspunde: 2

[Sursă] C# implementează maparea memoriei procesului pentru partajarea fișierelor

[Copiază linkul]
Postat pe 07.10.2017 18:51:10 | | |
Fișierele de mapare a memoriei folosesc memoria virtuală pentru a mapa fișierele la spațiul de adrese al procesului, după care procesul manipulează fișierul la fel ca adresa din spațiul procesului, de exemplu folosind memcpy și alte funcții de operare a memoriei în limbajul C. Această metodă poate fi folosită bine în situații în care un fișier sau un fișier mare trebuie procesat frecvent, iar eficiența procesării IO este mai mare decât cea a unui IO obișnuit
Memoria partajată este un caz special al fișierelor mapate în memorie, care mapează o bucată de memorie în loc de un fișier pe disc. Subiectul memoriei partajate este Proces, iar sistemul de operare alocă un spațiu de memorie fiecărui proces în mod implicit, iar fiecărui proces i se permite accesarea doar unei bucăți de memorie alocate de sistemul de operare, dar nu și altor procese. Și uneori trebuie să accesezi aceeași bucată de memorie între procese diferite, ce ar trebui să faci? Sistemul de operare oferă un API pentru a crea acces la memoria partajată, iar procesele care trebuie să împartă memoria pot accesa memoria partajată de mai multe procese prin acest set de API-uri definite, iar fiecare proces accesează această memorie ca și cum ar accesa un fișier de pe un hard disk. .Net 4.0 introduce System.IO. Namespace-ul MemoryMappedFiles, o clasă care cuprinde API-urile legate de Windows Shared Memory, facilitând utilizarea fișierelor de mapare a memoriei pentru programatorii .Net.
Folosește memorie partajată în C#. Codul următor pentru App1 permite utilizatorului să introducă o linie de text în memoria partajată; App2 reîmprospătează constant consola și afișează cele mai recente conținuturi de memorie partajată; App3 implementează aceleași funcții ca App2, dar metoda de citire este diferită.

Au fost folosite două metode pentru a citi datele.
Deoarece comunicarea dintre procese era rar folosită anterior, această metodă este doar o înțelegere preliminară. Programul este prea rudimentar și sunt multe lucruri care nu sunt judecate. De exemplu, cum să creezi o memorie partajată, cum să o recuperezi și să o ștergi, etc.




Precedent:.net/c# Cod sursă criptat CryptoJS aes
Următor:activemq Persistent store este plin
 Proprietarul| Postat pe 03.10.2025 16:10:57 |
.NET/C# implementează programul singleton bazat pe Mutex și MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html

Procesele părinte-copil .NET/C# comunică folosind MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com