在Windows 7中保留了兑现写入的顺序吗?

时间:2011-05-18 19:47:38

标签: windows-7 file-io

在Windows 7中写入文件时,Windows将默认缓存写入。当它完成写入时,Windows是否保留写入顺序,还是写入不按顺序发生?

我有一个连续写入二进制文件的现有应用程序。每隔20秒,它会写入一个数据块,更新文件的目录,然后调用_commit()将数据刷新到磁盘。

我想知道是否有必要调用commit,或者我们是否可以依赖Windows 7来正确地将数据传输到磁盘。

如果计算机出现故障,我不会太担心丢失最近20秒的数据,但我担心会使文件无效。如果文件的目录更新,但数据不存在,则文件将不正确。如果数据已更新,但目录不是,那么文件末尾会有额外的数据,但由于它没有被内容列表引用,因此在读取文件时会被忽略,我们有一个正确的文件。

1 个答案:

答案 0 :(得分:0)

写入必然按顺序发生。特别是如果有多个磁盘I / O未完成,文件系统/磁盘驱动程序可能会重新排序I / O操作以减少磁头运动。这意味着无法保证写入磁盘的数据将按照写入文件的顺序写入。

话虽如此,将文件刷新到磁盘将会停止,直到I / O完成 - 这可能意味着当应用程序执行更有用的操作时会有几十毫秒(甚至更长)的不活动。