gpt4 book ai didi

ruby-on-rails - Rails 进程的互斥锁

转载 作者:行者123 更新时间:2023-12-04 05:55:46 26 4
gpt4 key购买 nike

通过Passenger 或Mongrel 部署Rails 时,您有多个应用程序实例在运行。在共享资源上建立互斥锁的最佳实践或模式是什么,例如写入本地文件或远程文件。我想确保两个进程不会同时写入同一个资源。

最佳答案

如果您只需要防止多个作者同时处理一个文件,您可以使用 File#flock从每个进程请求独占写锁的方法:

fh = File.new("/some/file/path")
begin
fh.flock(File::LOCK_EX)
# ... write to the file here, or perform some other critical operation
ensure
fh.flock(File::LOCK_UN)
end

注意:将解锁调用放入 ensure如果在锁定文件后抛出未捕获的异常,则块对于防止死锁很重要。

关于ruby-on-rails - Rails 进程的互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com