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

C++ C/C++;文件输出缓冲区/缓冲区切换到操作系统,c++,ostream,output-buffering,C++,Ostream,Output Buffering,我正在维护一个线程的C++应用程序,它必须时不时地写一个大的二进制文件。 我希望尽量减少在{stream(fname);stream.write(largebuf};}中花费的时间,因此在写入/关闭流时,尽可能快地将数据移交给操作系统(Linux)。 我并不真正关心数据何时实际写入磁盘 这可能是一个OS优化问题(任何指针都是受欢迎的)——我只是想知道在C++代码中是否有任何东西可以改善上述块的周转时间。 谢谢, T.有什么特别的原因不能使用线程吗?如果您不关心数据何时实际写入磁盘,您可以使用线程

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

<>这可能是一个OS优化问题(任何指针都是受欢迎的)——我只是想知道在C++代码中是否有任何东西可以改善上述块的周转时间。 谢谢,
T.

有什么特别的原因不能使用线程吗?如果您不关心数据何时实际写入磁盘,您可以使用线程,这样在写入大的bin文件时就不会阻塞主线程

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

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

如果使用C++ 11,则可以考虑使用。