Quel est l'équivalent de fadvise / madvise sur Windows?
-
05-07-2019 - |
Question
Sous UNIX, je peux par exemple dire au système d'exploitation que le mappage sera nécessaire à l'avenir avec posix_fadvise (POSIX_FADV_WILLNEED)
. Il lira ensuite les données à l’avance s’il le sent.
Comment indiquer le but de l'accès à Windows?
La solution
En fait, comme Anders l’a principalement suggéré, il n’existe pas de méthode de ce type dans les fonctions de gestion de la mémoire disponibles dans Windows 7 et les versions antérieures .
Il existe 2 manières différentes de faire quelque chose de similaire:
- Lisez les données de manière asynchrone avec ReadFileEx . Il se peut que les données se trouvent encore dans le cache de fichiers si nécessaire ultérieurement.
- Ouvrez le fichier avec un indice de transmission en continu avec l'attribut
FILE_FLAG_SEQUENTIAL_SCAN
de CreateFile . Une relecture serait alors peut-être effectuée automatiquement.
Autres conseils
À partir de Windows 8, il existe le PrefetchVirtualMemory
à cette fin.
Vous pouvez transmettre FILE_FLAG_RANDOM_ACCESS
ou FILE_FLAG_SEQUENTIAL_SCAN
à CreateFile ()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow