假设我有一个单进程 Rack 应用程序,如果多个请求同时到达,是否可以call(env)
同时发生调用?还是保证call(env)
会连续发生,因此没有竞争条件@counter
?使用 Unicorn 或 Thin 有什么区别吗?
require 'json'
class Greeter
def call(env)
req = Rack::Request.new(env)
@counter ||= 0
@counter = @counter + 1
puts @counter
[200, {"Content-Type" => "application/json"}, [{x:"Hello World!"}.to_json]]
end
end
run Greeter.new