文件的原子操作

hyq1986 2010-02-26 03:32:23
对文件的每次操作,更新幅度较大,如同重写。
一般情况下,重写时遭遇断电等意外,文件内容可能丢失。
考虑到更新内容事小,文件可旧但不可丢失,采用这种方式:
重写一个临时文件,将临时文件代替旧文件。
力图实现文件重写的原子操作,可否?
替换文件操作,能做到原子化么?
...全文
129 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyq1986 2010-02-26
  • 打赏
  • 举报
回复
磁头的事,自有文件系统的日志管理。
zbing0203 2010-02-26
  • 打赏
  • 举报
回复
如果是替换文件也行吧
cphj 2010-02-26
  • 打赏
  • 举报
回复
理论上说,替换文件也不能做到原子化,因为断电时刻是一个无穷小量,它可以发生在磁头写磁盘的任意时刻

除非你使用量子计算机,使用量子来保存数据,那么可以做到原子化
hyq1986 2010-02-26
  • 打赏
  • 举报
回复
我不要求保存100%正确的,我是要让之前的东西别丢了。
stardust20 2010-02-26
  • 打赏
  • 举报
回复
1楼的方法挺好的。。。
hyq1986 2010-02-26
  • 打赏
  • 举报
回复
日志太复杂了~~~~
cattycat 2010-02-26
  • 打赏
  • 举报
回复
可以参考日志文件系统的方式。完成某个操作后,定时写检查点,断电时根据日志恢复到检查点。
很多数据库都是这样保证数据一致性的。
赵4老师 2010-02-26
  • 打赏
  • 举报
回复
引用 1 楼 mlee79 的回复:
写日志,然后做操作,如果操作时掉电,则根据日志重放...

正解!
不过这个世界上没有绝对的原子操作。
hai040 2010-02-26
  • 打赏
  • 举报
回复
好像没见过掉电也能100%保证文件完整性的软件
mLee79 2010-02-26
  • 打赏
  • 举报
回复
写日志,然后做操作,如果操作时掉电,则根据日志重放...

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧