O que é fadvise / madvise equivalente no Windows?
-
05-07-2019 - |
Pergunta
No UNIX, eu posso, por exemplo, dizer ao sistema operacional que o mapeamento será necessário no futuro com posix_fadvise(POSIX_FADV_WILLNEED)
. Será então read-ahead os dados se ele se sente assim.
Como saber o acesso a intenção do Windows?
Solução
Na verdade, como Anders sugeriu em sua maioria, não existe tal método nas funções de gerenciamento de memória disponíveis no Windows 7 e versões anteriores .
2 maneiras diferentes existe para fazer algo semelhante:
- Leia os dados de forma assíncrona com ReadFileEx . Os dados podem então ainda estar no cache de arquivos quando necessário mais tarde.
- Abrir o arquivo com uma pitada de streaming com o atributo
FILE_FLAG_SEQUENTIAL_SCAN
do CreateFile . Readahead, então, talvez, ser feito automaticamente.
Outras dicas
A partir do Windows 8, há a PrefetchVirtualMemory
função para esta finalidade.
Você pode passar FILE_FLAG_RANDOM_ACCESS
ou FILE_FLAG_SEQUENTIAL_SCAN
para CreateFile ()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow