gpt4 book ai didi

ruby-on-rails - Rails 3.1 并发风险

转载 作者:行者123 更新时间:2023-12-04 07:38:08 25 4
gpt4 key购买 nike

我正在创建一个新的 Rails 3.1 项目,在我的设计中我看到了一些并发风险,我想知道 Rails 如何处理它。

比方说我有 2 个不同的用户(单独的 session )和几个要在 FIFO 基础上分配的任务(第一个创建的任务应该首先分配)。两个用户都登录并接受任务。我担心可能是同一任务分配给两个用户或最后一个执行任务更新的用户。

我是不是什么都不担心了? Rails 3.1 能很好地处理这种情况吗?我应该在我的 SQL 中解决这个问题吗?

最佳答案

您需要清楚地定义您的排队逻辑 - 如果我是正确的,在您的情况下分配任务。任何并发系统都必然要经历对被操作的对象或实体的获取锁和释放锁的循环。在 Rails 世界中,您从浏览器发出的每个请求都是在单独的线程或进程中执行的请求。他们仍然可以争夺资源。因此,由您来定义此冲突解决方案。

实现它的一种方法是使用应用程序变量获取锁并使用 :synchronize 围绕方法 ( source)。

class SharedCache
@@lock = Mutex.new
def expire
...
end
synchronize :expire, :with => :@@lock
end

关于ruby-on-rails - Rails 3.1 并发风险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7990796/

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