我将选择在每次写入文件后使用 FlushFileBuffers 或每次需要打开同一个文件时使用 FILE_FLAG_NO_BUFFERING 。
但是我没有找到任何关于使用一个或另一个选项的性能比较表。好吧,除了MSDN 中的这个建议:
如果应用程序正在对磁盘执行多次写入,并且还需要确保将关键数据写入持久媒体,则应用程序应使用无缓冲 I/O,而不是频繁调用 FlushFileBuffers。要为无缓冲 I/O 打开文件,请使用 FILE_FLAG_NO_BUFFERING 和 FILE_FLAG_WRITE_THROUGH 标志调用 CreateFile 函数。这可以防止文件内容被缓存,并在每次写入时将元数据刷新到磁盘。
所以我假设:对于会多次读写的应用程序,最好不要使用 FlushFileBuffers。但是有没有比较文章,博客,论坛帖子关于它们的使用?如果文件在写入后被关闭?我的 google-fu 还没有得到任何东西。