В системе POSIX, такой как Linux или Solaris, попробуйте использовать posix_fadvise.
В потоковом файле сделайте что-то вроде этого:
posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
while( bytes > 0 ) {
bytes = pread(fd, buffer, 64 * 1024, current_pos);
current_pos += 64 * 1024;
posix_fadvise(fd, 0, current_pos, POSIX_FADV_DONTNEED);
}
И вы можете применить POSIX_FADV_WILLNEED к вашему другому файлу, который должен повысить приоритет памяти.
Теперь я знаю, что Windows Vista и Server 2008 также могут делать изящные трюки с приоритетами памяти. Вероятно, более старые версии, такие как XP, также могут выполнять более простые приемы. Но я не знаю этих функций, и у меня нет времени на их поиск.