Файли відображення пам'яті використовують віртуальну пам'ять для відображення файлів у адресний простір процесу, після чого процес маніпулює файлом так само, як і адресою у просторі процесу, наприклад, використовуючи memcpy та інші функції операцій пам'яті в мові C. Цей метод добре застосовується у ситуаціях, коли файл або великий файл потрібно часто обробляти, а ефективність обробки IO вища, ніж у звичайного IO Спільна пам'ять — це особливий випадок файлів, відображених пам'яттю, які відображають частину пам'яті замість файлу на диску. Об'єктом спільної пам'яті є Process, і операційна система за замовчуванням виділяє простір пам'яті кожному процесу, і кожен процес має доступ лише до фрагмента пам'яті, виділеної їй операційною системою, але не до інших процесів. І іноді потрібно отримати доступ до однієї й тієї ж пам'яті між різними процесами, що робити? Операційна система надає API для створення доступу до спільної пам'яті, і процеси, які потребують спільної пам'яті, можуть звертатися до пам'яті, спільної кількома процесами, через цей набір визначених API, і кожен процес звертається до цієї пам'яті так, ніби він звертається до файлу на жорсткому диску. .Net 4.0 вводить System.IO. MemoryMappedFiles — клас, який інкапсулює API, пов'язані з Windows Shared Memory, що полегшує .Net-програмістам використання файлів відображення пам'яті. Використовуйте спільну пам'ять у C#. Наступний код для App1 дозволяє користувачу вводити рядок тексту у спільну пам'ять; App2 постійно оновлює консоль і виводить останній контент спільної пам'яті; App3 реалізує ті ж функції, що й App2, але метод читання відрізняється.
Для зчитування даних використовувалися два методи. Оскільки комунікація між процесами раніше рідко використовувалася, цей метод є лише попереднім розумінням. Програма надто примітивна, і є багато речей, які не оцінюють. Наприклад, як створити спільну пам'ять, як її відновити та видалити тощо.
|