0

コントローラーに次のアクションがある場合

def give_a
 print a
 a = a+1
end

リクエストが来て、複数のリクエストが受信されたとき、各 Web サーバーで何が起こるでしょうか?

私は webrick とシンとシングル スレッドを知っているので、現在のリクエストが完了するまでリクエストが処理されないことを意味すると思います。

puma や unicorn (おそらく他のもの) などの同時 Web サーバーで何が起こるか 2 つの要求が来て、2 つの unicorn スレッドがそれらを処理する場合、両方の応答は同じa値を返しますか? (両方のリクエストが同時にメソッドに入った場合)

それとも、サーバー自体で何が起こるかに依存し、データへのアクセスはシリアルですか?

同時 Web サーバーにミューテックス/セマフォを設定する方法はありますか?

4

1 に答える 1

2

私の知る限り、レールアプリケーションはYourController.newリクエストごとにenvを作成します。

あなたが投稿したものからは、何aを意味するのかはわかりません。それが何らかの共有クラス変数である場合、それは変更可能な状態であり、両方の要求スレッドから変更できます。

于 2013-03-04T18:24:12.320 に答える