基于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] 举报,一经查实,本站将立刻删除。