如果nodejs是multithreading为什么我应该使用集群模块来利用多核cpu?

如果nodejs是multithreading的,请参阅本文和
线程由OS来pipe理,可以在同一个内核或者多核cpu的另一个内核中看到这个问题,然后nodejs会自动利用多核cpu,
那么为什么我应该使用cluster.fork来使节点上的不同进程利用多核,如本例中节点docs所示


我知道多进程的优点是,当一个进程下降还有另一个进程响应请求不像在线程,我需要知道是否多核可以利用每个核心的产卵过程或它是一个操作系统的任务,我不能控制

这取决于。

asynchronous发生的工作和Node自身发生的工作(如IO操作)是multithreading的。 您的JavaScript应用程序在单个线程中运行。

在我看来,唯一需要closures多个进程的时间是,如果绝大多数工作是在直接的JavaScript中完成的话。 节点的devise背后的事实是,这种情况很less出现,并且是为主要阻塞磁盘和networking的应用程序构build的。

因此,如果您有一个典型的Node应用程序,其中JavaScript不是大部分工作,那么触发多个进程将无助于您利用多个CPU /内核。

但是,如果您有一个特殊的应用程序,在主循环中执行大量工作,则可能需要多个进程。

最简单的方法是在应用程序运行时监视CPU利用率。 你将不得不根据每个应用来决定什么是最好的。

从开发者的angular度来看,Node并不是multithreading的。 线程的使用方式与Apache的worker mpm使用的方式截然不同。

我相信这个答案会把事情搞清楚。