Mic*_*enn 5 mutex ruby-on-rails
通过Passenger或Mongrel部署Rails时,您运行了多个应用程序实例.在共享资源上建立互斥锁的最佳实践或模式是什么,例如写入本地文件或远程文件.我想确保两个进程不会同时写入同一个资源.
rco*_*der 14
如果您只需要阻止多个编写器同时处理文件,您可以使用该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
Run Code Online (Sandbox Code Playgroud)
注意:ensure如果在锁定文件后抛出未捕获的异常,则将解锁调用放入块中对于防止死锁非常重要.
| 归档时间: |
|
| 查看次数: |
3400 次 |
| 最近记录: |