0

如果我在控制器中有以下操作

def give_a
 print a
 a = a+1
end

当一个请求到来并且收到多个请求时,每个网络服务器会发生什么?

我知道 webrick 和瘦单线程,所以我猜这意味着在当前请求完成之前不会处理请求。

在 puma 或 unicorn(可能是其他)等并发网络服务器中会发生什么如果有 2 个请求到来并且 2 个 unicorn 线程处理它们,两个响应会给出相同的a值吗?(在两个请求同时进入方法的情况下)

还是这一切都取决于服务器本身发生的事情以及对数据的访问是串行的?

有没有办法为并发网络服务器设置互斥体/信号量?

4

1 回答 1

2

afaik,rails 应用程序为YourController.new每个请求环境生成一个。

从您发布的内容中,无法看出是什么a意思。当它是某个共享类变量时,它是可变状态并且可以从两个请求线程进行修改。

于 2013-03-04T18:24:12.320 回答