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?

È stato utile?

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
scroll top