Я пишу критическое по времени приложение на C ++, где я записываю данные в журнал, который постоянно отображается и обновляется в веб-браузере (я не могу изменить это, пожалуйста, не рекомендую использовать другое решение).
В настоящее время я делаю что-то подобное каждые 100 мс, чтобы сбросить данные ( весь файл должен быть переписан каждый дамп)
ofstream log_file(log_path);
//Do some error handling
log_file << "Quite some data" << endl;
log_file.close();
Проблема состоит в том, что каждые несколько вызовов программе требуется около 20 мсек, чтобы открыть журнал, и это, кажется, вызывает много использования жесткого диска в некоторых системах (я подозреваю, что жесткий диск снова ищет файл при каждом повторном открытии процесса).
Есть ли способ держать дескриптор файла открытым все время, чтобы система, надеюсь, сохранила некоторый указатель на файл, чтобы минимизировать задержки и использование жесткого диска? Я с радостью переключусь на другой Write-API, если это потребуется.
Вы можете сохранить свой файл журнала в файловой системе в памяти, такой как /dev/shm
, Это позволит избежать доступа к дискам, если файл журнала не слишком велик для размещения на нем.
Других решений пока нет …