C/C++文件输出缓冲/缓冲区切换到操作系统



我正在维护一个单线程C++应用程序,它必须不时地编写一个大型二进制文件。我想尽量减少在{stream(fname);stream.write(largebuf};}中花费的时间,所以在写入/关闭流时,尽可能快地将数据移交给操作系统(Linux)。当数据实际写入磁盘时,我并不关心

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

谢谢,T.

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

您不能使用线程有什么特别的原因吗?如果你不在乎数据什么时候真正写入磁盘,你可以只使用线程,这样在写大bin文件时就不会阻塞主线程。

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

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

相关内容

最新更新