Ответ 1
Нет. В алфавитном порядке:
-
Iodine
альтернатива HTTP/Websocket Server и EventMachine (основанная на kqueue/epoll) -
Net::HTTP::Server
, несмотря на отсутствие рекламы, поддерживает многопоточность - Phusion Passenger поддерживает многопоточность с тех пор v4 beta
- Rainbows! поддерживает несколько моделей concurrency, включая многопоточность
- Reel - Celluloid -backed "evented", который также отлично подходит для многопоточных приложений и обеспечивает традиционную многопоточную блокировку ввода-вывода "
- Thin имеет потоковый режим, который можно включить, передав
--threaded
или установивthreaded: true
в соответствующем файле конфигурации (например,bundle exec thin start --threaded
) - WEBrick работает самостоятельно, поэтому нечестно исключить его как опцию; если вы используете встроенную версию Rails, вам нужно monkey-patch
Rails::Server
включить многопоточность - Zbatery основан на Rainbows! и поддерживает все модели concurrency, которые радуют! поддерживает
Обратите внимание, что в настоящее время MRI Ruby запускает только один поток, выполняемый за раз из-за его глобального блокирования интерпретатора (GIL). Вы действительно сможете использовать многопоточность, используя другую среду выполнения Ruby, такую как JRuby или Rubinius, которые обеспечивают доступ к собственным потокам. Если вы решите пойти с JRuby, существует несколько JVM-зависимых серверов, которые стоит изучить.