如果Node.js是单线程的,Rails是什么?

如果我们说Node.js是单线程的,因此只有一个线程可以处理所有请求,Rails是什么?

据我所知,Node.js既是应用程序也是服务器,但是我迷失在Rails上呢? Rails如何根据线程/进程处理请求?

Rails可以是单线程的,可以是multithreading的,可以是多进程的(每个进程是单线程的),也可以是多进程的,每个进程是multithreading的。

这一切都取决于你使用的应用程序服务器,这取决于你使用的是哪个Ruby实现。 MRI Ruby从1.9开始支持本地线程,但它仍然保留着所谓的全局解释器锁。 GIL可以防止Ruby解释器一次在多个线程中运行。 在大多数情况下,这并不是什么大不了的事情,因为事情线程正在帮助最多的是等待I / O。 如果您使用JRuby或Rubinius,他们实际上可以一次在多个线程中运行Ruby代码。

查看不同的应用程序服务器以及他们提供的并发function。 Unicorn是部署多进程/单线程应用程序的常用工具。 Puma是一款能够运行multithreading应用程序的新型应用程序服务器,我相信他们要么增加(或者现在已经添加了,我不确定)是否能够运行多进程。 乘客似乎能够在我上面列出的每个模型中工作。

希望这会有帮助。 它至less应该给你一些谷歌的东西,以find更多的信息。