Windows有一个FILE_FLAG_NO_BUFFERING标志,允许您指定是否希望文件系统缓存您的I/O。
这很好,但是如果可能的话我想使用缓存,但避免修改它呢?
换句话说,如何告诉Windows以下内容?
如果这个文件已经被缓存了,就从缓存中读取它,但是我的数据没有显示局部性,所以不会将它放入缓存中!
SCSI标准定义了一个精确的禁用页面输出位,所以我想知道(如果有的话)如何从Windows (当然也与文件系统缓存合作)使用该特性?
编辑: TL;DR:
什么是FILE_FLAG_WRITE_THROUGH对于,读,__?
发布于 2011-05-02 01:30:03
我看到两面旗子看起来很像你想要的东西:
FILE_FLAG_RANDOM_ACCESS
FILE_FLAG_SEQUENTIAL_SCAN后者的文档清楚地表明,它不会在缓存中保留页面,尽管它可能会按顺序提前阅读。前者的医生是完全不透明的,但似乎暗示了你想要什么。如果模式是随机的,那么保存页面以便以后重用将是对内存的浪费。
请记住,对于文件,Windows内核总是使用一些页面的“缓存”来保存I/O --它没有其他地方可以放置它。因此,说‘不要缓存它’与‘在驱逐其他页面之前删除该文件的旧页’是没有意义的。“
发布于 2011-05-01 21:52:41
关于Windows提供的最接近于您所要求的是FILE_FLAG_WRITE_THROUGH。
https://stackoverflow.com/questions/5851555
复制相似问题