2009-07-29 9 views
10

W systemie UNIX mogę na przykład powiedzieć systemowi operacyjnemu, że mapowanie będzie potrzebne w przyszłości przy użyciu posix_fadvise(POSIX_FADV_WILLNEED). Jeśli uzna to za stosowne, odczyta je na przyszłość.Co to jest odpowiednik fadvise/madvise w oknach?

Jak określić dostęp do systemu Windows?

Odpowiedz

9

Faktycznie, jak Anders głównie zasugerował, nie ma takiej metody w funkcji zarządzania pamięcią dostępnych w systemie Windows 7 i wcześniejszych.

2 różne sposoby istnieje coś podobnego:

  • odczytać dane asynchronicznie z ReadFileEx. Dane mogą następnie nadal znajdować się w pamięci podręcznej plików, gdy zajdzie taka potrzeba później.
  • Otwórz plik z podpowiedzi przesyłania strumieniowego z atrybutem FILE_FLAG_SEQUENTIAL_SCAN z CreateFile. Readahead mógłby wtedy zostać automatycznie wykonany.
4

można przekazać FILE_FLAG_RANDOM_ACCESS lub FILE_FLAG_SEQUENTIAL_SCAN do CreateFile()

+0

Czy są to jedyne możliwości podpowiedzi w systemie Windows? –

+0

Jeśli chodzi o wskazówki, myślę, że tak. Możesz wyłączyć buforowanie i tym podobne, ale niektóre z tych innych flag mają wymagania dotyczące wyrównania, więc jego bardziej niż prosta podpowiedź – Anders

+1

FILE_ATTRIBUTE_TEMPORARY również wygląda na użyteczną - zgodnie z http://msdn.microsoft.com/en-us/library/aa363858 % 28v = vs.85% 29.aspx # caching_behavior mówi systemowi, aby unikał zapisywania danych na dysku, jeśli jest wystarczająco dużo pamięci podręcznej. – BCran

Powiązane problemy