草庐IT

FlushFileBuffers

全部标签

windows - 是否需要 FlushFileBuffers 才能跨多个进程同步文件数据?

我有一个被许多进程读/写的文件,它们使用互斥锁来序列化读/写。是否需要在ProcessA中的WriteFile之后调用FlushFileBuffers以便ProcessB可以看到这些更改?或者ProcessB是否可以保证看到ProcessA所做的更改,假设该文件的操作系统磁盘缓存在所有进程之间共享?调用WriteFile后,我没有调用文件上的CloseHandle,我让它在所有进程中保持打开状态,但它们有FILE_SHARE_READ和FILE_SHARE_WRITE标志传递给CreateFile。这是跨WindowsXP到Windows8.1工作所必需的-我发现调用FlushFile

c++ - 如何刷新 Windows 中的所有文件缓冲区?

在Windows中有FlushFileBuffers()API可以为单个文件刷新缓冲区到硬盘驱动器。Linux中有sync()API可以刷新所有文件的文件缓冲区。但是,是否也有用于刷新所有文件的WinAPI,即sync()模拟? 最佳答案 https://learn.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-flushfilebuffers可以刷新整个硬盘驱动器。Toflushallopenfilesonavolume,callFlushFileBuffer

c# - 大文件的 Windows fsync (FlushFileBuffers) 性能

来自确保数据在磁盘上的信息(http://winntfs.com/2012/11/29/windows-write-caching-part-2-an-overview-for-application-developers/),即使在例如停电时,在Windows平台上,您似乎需要依靠其“fsync”版本FlushFileBuffers来最好地保证缓冲区实际上从磁盘设备缓存刷新到存储介质本身。FILE_FLAG_NO_BUFFERING与FILE_FLAG_WRITE_THROUGH的组合不能确保刷新设备缓存,但仅对文件系统缓存产生影响(如果此信息正确的话)。鉴于我将处理相当大的文件,需