Здравствуйте Андрей Ш, Вы писали:
АШ>АШ>void process::Flush()
АШ>{
АШ> SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1);
АШ> DWORD t;
АШ> HANDLE h=CreateThread(0,0,FlushF,this->basezero,0,&t);
АШ> if(h!=NULL)
АШ> CloseHandle(h);
АШ>}
АШ>
АШ>где FlushF:
АШ>АШ>DWORD WINAPI process::FlushF(LPVOID z)
АШ>{
АШ> return FlushViewOfFile(z,0);
АШ>}
АШ>
Реализовал этот код – теряется вся прелесть последовательного доступа к диску (что, по идее, и должно обеспечивать максимальную скорость записи), т.к. процесс FlushViewOfFile рассинхронизизирован с родительским процессом.
Попробовал синхронизировать родительский поток с дочерним – после вызова Flush() поставил WaitForSingleObject(…). Эффект получился немного хуже, чет от простого вызова FlushViewOfFile :crash: .
Может я чего не понимаю?