Windows 7 Windows 7中是否保留了兑现写入的顺序?

Windows 7 Windows 7中是否保留了兑现写入的顺序?,windows-7,file-io,Windows 7,File Io,在Windows 7中写入文件时,默认情况下Windows将缓存写入。当完成写入时,Windows是否保留写入顺序,或者写入是否会无序发生 我有一个现有的应用程序,可以连续写入二进制文件。每隔20秒,它会写入一块数据,更新文件的目录,并调用\u commit()将数据刷新到磁盘 我想知道是否有必要调用commit,或者我们是否可以依靠windows7将数据正确地发送到磁盘 如果电脑坏了,我不太担心丢失最近20秒的数据,但我担心的是使文件无效。如果文件的目录已更新,但数据不存在,则文件将不正确。如

在Windows 7中写入文件时,默认情况下Windows将缓存写入。当完成写入时,Windows是否保留写入顺序,或者写入是否会无序发生

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

我想知道是否有必要调用commit,或者我们是否可以依靠windows7将数据正确地发送到磁盘

如果电脑坏了,我不太担心丢失最近20秒的数据,但我担心的是使文件无效。如果文件的目录已更新,但数据不存在,则文件将不正确。如果数据已更新,但目录未更新,则文件末尾将有额外数据,但由于目录未引用该数据,因此在读取文件时将忽略该数据,因此我们有一个正确的文件。

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

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

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


话虽如此,将文件刷新到磁盘将暂停,直到I/O完成——这可能意味着当应用程序可以做一些更有用的事情时,会有几十毫秒(甚至更长)的不活动时间。

重新暂停几毫秒:这就是我问这个问题的部分原因。在Windows 7上,
\u commit
最多需要100毫秒。我希望能够消除此延迟并让Windows处理,但根据您的回答,我无法做到这一点。您可以始终使用类似sqllite的数据库,在这一点上事务的管理将为您处理。RE Stall for millides:这就是我问这个问题的部分原因。在Windows 7上,
\u commit
最多需要100毫秒。我希望能够消除此延迟并让Windows处理,但根据您的回答,我无法做到这一点。您可以始终使用类似sqllite的数据库,在这一点上为您处理事务的管理。