如何使我的计数线程安全?

时间:2012-04-30 23:51:00

标签: ruby-on-rails ruby-on-rails-3

我有一个控制器,它的唯一功能是增加模型中的计数(即foo_count)并加载视图。

假设我有2个Web实例正在运行。如果10个并发用户同时点击此页面/控制器。我的数量是10吗?

是否会出现某种竞争状况?由于它们是并发匹配,因此两个Web请求都会加载模型Foobar的副本,foo_count等于0 FoobarController

这意味着他们都在自己的Foobar副本上运行,而这些副本并不知道其他Web实例正在进行的更改。这也意味着,计数不太可能是10。

有什么方法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

您应该使用built-in records locking来避免竞争条件。