我正在维护一个单线程C ++应用程序,它必须不时编写一个大型二进制文件。 我想尽量减少{stream(fname); stream.write(largebuf};},因此在写入/关闭流时,尽可能快地将数据移交给OS(Linux)。 我并不真正关心当数据实际上是物理地写入磁盘时。
这很可能是一个操作系统调优问题(欢迎使用任何指针) - 我只想知道在C ++代码中是否可以做任何事情来改善上面显示的块的周转时间。
感谢, 吨。
答案 0 :(得分:1)
如果构建C ++ 11不是问题,您可以考虑使用std::async。
答案 1 :(得分:0)
您是否有任何特殊原因无法使用线程?如果您不关心数据何时实际写入磁盘,您可以只使用线程,这样在写入大型bin文件时就不会阻塞主线程。
std::thread write_thread([&fname, &largebuf](){ stream(fname); stream.write(largebuf}; });
PS:示例使用的是C ++ 11特性(线程和lambda函数)。