【发布时间】:2011-03-24 19:13:33
【问题描述】:
在我的 rails 应用程序中,我有一些这样的代码:
def foo
if object_bar_exists
raise "can't create bar twice!"
end
Bar.create
end
这可以由进入应用服务器的两个不同请求调用。如果这段代码由两个请求同时运行,并且它们都同时运行if检查,则两者都不会找到对方的bar,并且会创建2个bars。
为“条形集合”创建“互斥体”的最佳方法是什么?数据库中的特殊用途互斥表?
更新
我应该强调我不能在这里使用内存互斥锁,因为并发是跨请求/进程而不是线程。
【问题讨论】:
标签: ruby-on-rails activerecord transactions locking