Qual è l'equivalente di fadvise / madvise su Windows?
-
05-07-2019 - |
Domanda
Su UNIX, ad esempio, posso dire al sistema operativo che la mappatura sarà necessaria in futuro con posix_fadvise (POSIX_FADV_WILLNEED)
. In questo modo rileggerà i dati se lo ritiene.
Come comunicare l'accesso a Windows?
Soluzione
In realtà, come suggerito da Anders, non esiste tale metodo nelle funzioni di gestione della memoria disponibili in Windows 7 e precedenti .
Esistono 2 modi diversi per fare qualcosa di simile:
- Leggi i dati in modo asincrono con ReadFileEx . I dati potrebbero quindi essere ancora nella cache dei file quando necessario in seguito.
- Apri il file con un suggerimento per lo streaming con l'attributo
FILE_FLAG_SEQUENTIAL_SCAN
di CreateFile . Readahead potrebbe quindi essere fatto automaticamente.
Altri suggerimenti
A partire da Windows 8, c'è PrefetchVirtualMemory
per questo scopo.
Puoi passare FILE_FLAG_RANDOM_ACCESS
o FILE_FLAG_SEQUENTIAL_SCAN
a CreateFile ()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow