Файлы отображения памяти используют виртуальную память для сопоставления файлов с адресным пространством процесса, после чего процесс управляет файлом так же, как адрес в пространстве процесса, например, используя memcpy и другие функции операций памяти в языке C. Этот метод хорошо применяется в ситуациях, когда файл или большой файл требуется частая обработка, а эффективность обработки ввода-выводов выше, чем у обычного ввода Общая память — это особый случай файлов, отображаемых на памяти, которые отображают фрагмент памяти вместо файла на диске. Объектом общей памяти является Process, и операционная система по умолчанию выделяет пространство памяти каждому процессу, при этом каждый процесс имеет доступ только к части памяти, выделенной операционной системой, но не к другим процессам. И иногда нужно получить доступ к одной и той же памяти между разными процессами, что делать? Операционная система предоставляет API для создания доступа к общей памяти, и процессы, требующие совместной памяти, могут получать доступ к памяти, используемой несколькими процессами, через этот набор определённых API, и каждый процесс обращается к этой памяти так, как если бы он обращался к файлу на жёстком диске. .Net 4.0 вводит System.IO. Spacespace имён MemoryMappedFiles — класс, инкапсулирующий API, связанные с Windows Shared Memory, что облегчает программистам .Net использование файлов отображения памяти. Используйте общую память в C#. Следующий код для App1 позволяет пользователю ввести строку текста в общую память; Приложение 2 постоянно обновляет консоль и выводит свежее содержимое общей памяти; App3 реализует те же функции, что и App2, но метод чтения отличается.
Для чтения данных использовались два метода. Поскольку коммуникация между процессами ранее редко использовалась, этот метод является лишь предварительным пониманием. Программа слишком примитивна, и есть много вещей, которые не осуждаются. Например, как создать общую память, как её восстановить и удалить и так далее.
|