微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我能保证Ruby中的原子追加吗?

基于Is file append atomic in UNIX?和其他来源,它看起来像在现代Linux上,我可以在追加模式下打开文件并从多个进程写入小块(< PIPE_BUF)而不用担心撕裂. 这些限制是否通过syswrite扩展到Ruby?专门针对此代码

f = File.new('...', 'a')
f.syswrite("short string\n")

我可以期望写入不与其他进程以相同方式写入交错吗?或者是否有一些我不知道的缓冲/潜在分裂?

假设ruby> = 2.3

解决方法:

我不会这么认为. syswrite调用write POSIX函数,该函数在处理文件时不会声明原子性.

见:Are POSIX’ read() and write() system calls atomic?

Understanding concurrent file writes from multiple processes

Tl; dr-你应该在你的应用程序中实现一些并发控制来同步这种访问.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐