经过短期研究,我在两个进程之间发生并发问题我已经看到temporary file
被建议解决此问题。使用File#flock作为ruby全局锁(进程互斥量)
所以解决办法是创建/tmp/global.lock
并将其用作全局锁。我在此线程中找到的示例Mutex for Rails Processes
迄今为止对我有意义,但我希望看到此解决方案的最佳实践。以上解释是有道理的,但我不知道如何检查给定文件是否被锁定?
fh = File.open("/some/file/path", File::CREAT)
begin
if locked = check_file_locked?()
sleep(1)
else
fh.flock(File::LOCK_EX)
# do what you need to do
end
ensure
fh.flock(File::LOCK_UN)
end
这是我的解决方案的理解和不知道如何实现提及check_file_locked?()
?另外如果有最好的方法会喜欢听到它。
谢谢你,优秀的写了。 –