我正在设计一个将时间序列数据写入文件的系统。数据是 8 字节的块,分为两个 4 字节部分:时间和有效负载。
根据 MSDN,WriteFile 函数是原子的(http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx),如果写入的数据小于一个扇区的大小。
由于文件仅包含这些块(没有文件的“结构”,因此不可能重建损坏的文件),逐个添加,因此至关重要的是整个块或没有任何内容写入文件一直。
所以问题是,我是否正确理解了大小小于扇区的 writefile 总是完全写入磁盘或根本不写入,无论实际调用 writefile 期间发生什么情况?
只要写入不跨越文件中的扇区边界,WriteFile 就是原子的。因此,如果扇区大小为 512 字节,则从文件偏移 0 开始写入 20 个字节将是原子的,但在文件偏移 500 写入相同的数据将不是原子的。在您的情况下,写入应该是原子的,因为扇区大小应该是 8 的倍数。
这个 MSDN 博客有关如何在不使用事务处理 NTFS 的情况下执行原子多扇区写入的更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)