据我所知,使用 POSIXO_DIRECT
与open()
阻止设备文件的工作方式与在 Windows 上结合FILE_FLAG_WRITE_THROUGH
使用POSIX 和FILE_FLAG_NO_BUFFERING
使用相同CreateFile()
- 这是我正确假设的吗?
打开:
O_DIRECT尽量减少进出该文件的 I/O 的缓存影响。一般来说,这会降低性能,但在特殊情况下很有用,例如当应用程序进行自己的缓存时。文件 I/O 直接与用户空间缓冲区进行。
创建文件:
如果使用了FILE_FLAG_WRITE_THROUGH但未同时指定FILE_FLAG_NO_BUFFERING ,则系统缓存生效,则数据将写入系统缓存,但会立即刷新到磁盘。如果同时指定了FILE_FLAG_WRITE_THROUGH和FILE_FLAG_NO_BUFFERING ,则系统缓存不起作用,则数据会立即刷新到磁盘,而无需通过 Windows 系统缓存。操作系统还请求将硬盘的本地硬件缓存写入持久媒体。