Если у меня есть следующее действие в контроллере
def give_a
print a
a = a+1
end
Что происходит на каждом веб-сервере, когда приходит запрос и когда поступает несколько запросов?
Я знаю, что webrick, тонкий и однопоточный, поэтому я предполагаю, что это означает, что запрос не обрабатывается до тех пор, пока текущий запрос не будет выполнен.
Что происходит на параллельных веб-серверах, таких как puma или unicorn (возможно, другие) Если поступает 2 запроса и их обрабатывают 2 потока unicorn, будут ли оба ответа давать одно и то же значение a
? (в ситуации, когда оба запроса входят в метод одновременно)
или все зависит от того что происходит на самом сервере и доступ к данным последовательный?
Есть ли способ иметь мьютекс/семафор для параллельных веб-серверов?