C / C ++文件输出缓冲/缓冲切换到OS

时间:2013-11-29 10:34:39

标签: c++ ostream output-buffering

我正在维护一个单线程C ++应用程序,它必须不时编写一个大型二进制文件。 我想尽量减少{stream(fname); stream.write(largebuf};},因此在写入/关闭流时,尽可能快地将数据移交给OS(Linux)。 我并不真正关心数据实际上是物理地写入磁盘时。

这很可能是一个操作系统调优问题(欢迎使用任何指针) - 我只想知道在C ++代码中是否可以做任何事情来改善上面显示的块的周转时间。

感谢, 吨。

2 个答案:

答案 0 :(得分:1)

如果构建C ++ 11不是问题,您可以考虑使用std::async

答案 1 :(得分:0)

您是否有任何特殊原因无法使用线程?如果您不关心数据何时实际写入磁盘,您可以只使用线程,这样在写入大型bin文件时就不会阻塞主线程。

std::thread write_thread([&fname, &largebuf](){ stream(fname); stream.write(largebuf}; });

PS:示例使用的是C ++ 11特性(线程和lambda函数)。