Pliki mapujące pamięć wykorzystują pamięć wirtualną do mapowania plików na przestrzeń adresową procesu, po czym proces manipuluje plikiem tak samo jak adresem w przestrzeni procesu, na przykład używając memcpy i innych funkcji operacyjnych pamięci w języku C. Metoda ta może być dobrze stosowana w sytuacjach, gdy plik lub duży plik musi być często przetwarzany, a wydajność przetwarzania IO jest wyższa niż w przypadku zwykłego IO Pamięć współdzielona to szczególny przypadek plików mapowanych na pamięć, które mapują fragment pamięci zamiast pliku na dysku. Podmiotem pamięci współdzielonej jest proces, a system operacyjny domyślnie przydziela każdemu procesowi przestrzeń pamięci, a każdy proces może uzyskać dostęp tylko do fragmentu pamięci przydzielonego mu przez system operacyjny, ale nie do innych procesów. A czasem trzeba uzyskać dostęp do tego samego fragmentu pamięci między różnymi procesami, co powinieneś zrobić? System operacyjny udostępnia API do tworzenia dostępu do pamięci współdzielonej, a procesy potrzebujące współdzielenia pamięci mogą uzyskać dostęp do pamięci współdzielonej przez wiele procesów za pomocą tego zestawu zdefiniowanych API, a każdy proces uzyskuje dostęp do tej pamięci tak, jakby uchodził do pliku na dysku twardym. .Net 4.0 wprowadza System.IO. MemoryMappedFiles, klasa enkapsulująca API związane z Windows Shared Memory, ułatwiając programistom .Net korzystanie z plików mapowania pamięci. Używaj współdzielonej pamięci w C#. Poniższy kod dla App1 pozwala użytkownikowi wprowadzić linijkę tekstu do pamięci współdzielonej; App2 stale odświeża konsolę i generuje najnowsze treści z pamięcią współdzieloną; App3 realizuje te same funkcje co App2, ale metoda odczytu jest inna.
Do odczytu danych użyto dwóch metod. Ponieważ komunikacja między procesami była wcześniej rzadko stosowana, metoda ta stanowi jedynie wstępne zrozumienie. Program jest zbyt prymitywny, a wiele rzeczy nie jest oceniane. Na przykład, jak stworzyć współdzieloną pamięć, jak ją pobrać i usunąć itd.
|