Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 23927|Απάντηση: 2

[Πηγή] Η C# υλοποιεί τη μνήμη διεργασιών χαρτογράφησης αρχείων κοινής χρήσης

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 7/10/2017 6:51:10 μ.μ. | | |
Τα αρχεία αντιστοίχισης μνήμης χρησιμοποιούν εικονική μνήμη για να αντιστοιχίσουν αρχεία στο χώρο διευθύνσεων της διεργασίας, μετά την οποία η διεργασία χειρίζεται το αρχείο ακριβώς όπως η διεύθυνση στο χώρο διεργασίας, όπως η χρήση memcpy και άλλων λειτουργιών λειτουργίας μνήμης στη γλώσσα C. Αυτή η μέθοδος μπορεί να χρησιμοποιηθεί καλά σε περιπτώσεις όπου ένα αρχείο ή ένα μεγάλο αρχείο χρειάζεται συχνή επεξεργασία και η απόδοση επεξεργασίας IO είναι υψηλότερη από αυτή του συνηθισμένου IO
Η κοινόχρηστη μνήμη είναι μια ειδική περίπτωση αρχείων με αντιστοίχιση μνήμης, τα οποία αντιστοιχίζουν ένα κομμάτι μνήμης αντί για ένα αρχείο στο δίσκο. Το θέμα της κοινόχρηστης μνήμης είναι η διεργασία και το λειτουργικό σύστημα εκχωρεί χώρο μνήμης σε κάθε διεργασία από προεπιλογή και κάθε διεργασία επιτρέπεται να έχει πρόσβαση μόνο σε ένα κομμάτι μνήμης που της έχει εκχωρηθεί από το λειτουργικό σύστημα, αλλά όχι σε άλλες διεργασίες. Και μερικές φορές χρειάζεται να έχετε πρόσβαση στο ίδιο κομμάτι μνήμης μεταξύ διαφορετικών διαδικασιών, τι πρέπει να κάνετε; Το λειτουργικό σύστημα παρέχει ένα API για τη δημιουργία πρόσβασης σε κοινόχρηστη μνήμη και οι διεργασίες που χρειάζονται κοινή χρήση μνήμης μπορούν να έχουν πρόσβαση στη μνήμη που μοιράζονται πολλές διεργασίες μέσω αυτού του συνόλου καθορισμένων API και κάθε διεργασία έχει πρόσβαση σε αυτήν τη μνήμη σαν να είχε πρόσβαση σε ένα αρχείο σε σκληρό δίσκο. Το .Net 4.0 παρουσιάζει το System.IO. Χώρος ονομάτων MemoryMappedFiles, μια κλάση που ενσωματώνει τα API που σχετίζονται με την κοινόχρηστη μνήμη των Windows, διευκολύνοντας τους προγραμματιστές .Net να χρησιμοποιούν αρχεία αντιστοίχισης μνήμης.
Χρησιμοποιήστε κοινόχρηστη μνήμη σε C#. Ο ακόλουθος κώδικας για το App1 επιτρέπει στο χρήστη να εισάγει μια γραμμή κειμένου στην κοινόχρηστη μνήμη. Το App2 ανανεώνει συνεχώς την κονσόλα και εξάγει το πιο πρόσφατο περιεχόμενο κοινόχρηστης μνήμης. Το App3 υλοποιεί τις ίδιες λειτουργίες με το App2, αλλά η μέθοδος ανάγνωσης είναι διαφορετική.

Χρησιμοποιήθηκαν δύο μέθοδοι για την ανάγνωση των δεδομένων.
Δεδομένου ότι η επικοινωνία μεταξύ των διαδικασιών χρησιμοποιήθηκε σπάνια στο παρελθόν, αυτή η μέθοδος είναι μόνο μια προκαταρκτική κατανόηση. Το πρόγραμμα είναι πολύ υποτυπώδες και υπάρχουν πολλά πράγματα που δεν κρίνονται. Για παράδειγμα, πώς να δημιουργήσετε μια κοινόχρηστη μνήμη, πώς να την ανακτήσετε και να τη διαγράψετε κ.λπ.




Προηγούμενος:.net/c# Κρυπτογραφημένος πηγαίος κώδικας CryptoJS aes
Επόμενος:Ο μόνιμος χώρος αποθήκευσης activemq είναι γεμάτος
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 3/10/2025 4:10:57 μ.μ. |
Το .NET/C# υλοποιεί το πρόγραμμα singleton που βασίζεται σε Mutex και MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html

Οι διεργασίες γονέα-παιδιού .NET/C# επικοινωνούν χρησιμοποιώντας το MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com