OberonCore https://forum.oberoncore.ru/ |
|
Файлы в памяти https://forum.oberoncore.ru/viewtopic.php?f=47&t=5511 |
Страница 1 из 1 |
Автор: | Илья Ермаков [ Суббота, 03 Октябрь, 2015 19:46 ] | ||
Заголовок сообщения: | Файлы в памяти | ||
Коллеги, по просьбе Ивана Денисова выкладываю реализацию файлов в памяти. Можно работать между несколькими ББ в одном адресном пространстве. Но защитные блокировки на совместный доступ надо организовывать отдельно. Это кусок платформы "Ода" (2009 г.). Там получается несколько связанных модулей: Oda_sysTypes - некоторые базовые типы Oda_sysInfo - информация об ОС Oda_sysFiles (и автоматически подгружаемые реализации Oda_sysLinFiles, Oda_sysWinFiles) - расширения Files (Truncate; процедуры позиционирования и длины с LONGINT, правда, это чисто интерфейс, реализации для файлов > 2Гб нет) Oda_sysGlobalHeap (и реализации Oda_sysLinGlobalHeap, Oda_sysWinGlobalHeap) - системная куча процесса Oda_sysPageArrays - массивы из страниц над GlobalHeap Oda_sysPageFiles - абстракция страничного файла (т.е. файла, в который можно добавлять/изымать страницы) Oda_sysMem - некоторые средства работы с памятью Oda_sysMemFiles - собственно, "виновник торжества" - файлы в памяти. Кое-на-что есть кое-какая документация Простой способ использования: Oda_sysFiles.memBufDir.New(размерБлока) Полный способ - в документации к модулю MemFiles (сначала создать PageArray, потом открыть на его основе файл). ПРи работе из разных ББ PageArray создается одним из них, а потом Attach-ится к имеющемуся базовому адресу в памяти (т.е. получается, что над одной структурой открыты два объекта PageArray в разных ББ). Напоминаю, что синхронизация не встроена в PageArray.
|
Автор: | Иван Денисов [ Суббота, 03 Октябрь, 2015 21:50 ] |
Заголовок сообщения: | Re: Файлы в памяти |
Спасибо, буду разбираться. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |