Что такое эквивалент fadvise/madvise в Windows?
-
05-07-2019 - |
Вопрос
В UNIX я могу, например, сообщить ОС, что отображение потребуется в будущем с помощью posix_fadvise(POSIX_FADV_WILLNEED)
.Затем он будет считывать данные, если так считает.
Как определить намерение доступа к Windows?
Решение
На самом деле, как в основном предположил Андерс, такого метода нет в функциях управления памятью, доступных в Windows 7 и более ранних версиях.
Существует два разных способа сделать что-то подобное:
- Прочитайте данные асинхронно с помощью ReadFileEx.Тогда данные могут по-прежнему находиться в файловом кеше, когда они понадобятся позже.
- Откройте файл с подсказкой потоковой передачи с помощью
FILE_FLAG_SEQUENTIAL_SCAN
атрибут Создать файл.Тогда упреждающее чтение, возможно, будет выполняться автоматически.
Другие советы
Начиная с Windows 8, есть PrefetchVirtualMemory
для этой цели.
Вы можете передать FILE_FLAG_RANDOM_ACCESS
или FILE_FLAG_SEQUENTIAL_SCAN
в CreateFile ()
Не связан с StackOverflow