Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 23927|Відповідь: 2

[Джерело] C# реалізує відображення файлової пам'яті процесів

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

Для зчитування даних використовувалися два методи.
Оскільки комунікація між процесами раніше рідко використовувалася, цей метод є лише попереднім розумінням. Програма надто примітивна, і є багато речей, які не оцінюють. Наприклад, як створити спільну пам'ять, як її відновити та видалити тощо.




Попередній:.net/c# КриптоJS aes зашифрований вихідний код
Наступний:Постійний магазин activemq заповнений
 Орендодавець| Опубліковано 03.10.2025 16: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 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com