繁体   English   中英

在OS级别的一个原子操作中创建和写入文件

[英]Create and write a file in one atomic operation on OS level

所以我需要创建一个文件,然后写一行,这必须是原子的。 因此,在初始化时,没有其他进程可以修改文件。
我有一个想法,在锁定时锁定不同的东西,然后执行操作然后释放锁定以让另一方进入。但这非常繁琐,也可能是错误的,因为创建锁定并获取它可能是不是原子的(我猜)。 没办法其他办法吗?

我建议您编写临时文件,然后重命名为您的文件。 我不确定这个操作是在java中实现的所有操作系统的原子,但至少在Unix上你有机会,因为我认为它使用与原子的mv相同的调用。

我想,它不会是真正的Windows原子。 对于大多数应用来说,它几乎是“原子的”。

如果你想要一些可以安全防范其他进程的东西,我建议你阅读http://en.wikipedia.org/wiki/File_locking并利用JNI进入操作系统级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM