我正在用 C++ 编写一个时间关键型应用程序,我将数据写入日志,该日志在 Web 浏览器中不断显示和更新(我无法更改这一点,请不要推荐使用其他解决方案)。
目前,我每 100 毫秒执行一次这样的操作来转储数据(每次转储都必须重写整个文件):
ofstream log_file(log_path);
//Do some error handling
log_file << "Quite some data" << endl;
log_file.close();
问题是程序每隔几次调用就需要大约 20 毫秒来打开日志,这似乎会在某些系统上导致大量硬盘使用(我怀疑硬盘在每次重新打开过程中都会再次寻找文件)。
有没有办法让文件句柄一直保持打开状态,以便系统希望保留一些指向文件的指针,以最大限度地减少延迟和硬盘使用?如果需要,我也很乐意切换到不同的 Write-API。