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

Bas*_*emm 4 multithreading node.js

如果nodejs是多线程的,请参阅 本文,
线程由OS管理,可以在同一个核心或多核cpu中的另一个核心中查看此问题,然后nodejs将自动使用多核cpu,
那么我为什么要使用cluster.fork来做出不同的如节点docs中的示例所示,节点利用多核的过程


我知道多进程有一个优势,当一个进程落在那里还有另一个响应请求的进程不同于线程时,我需要知道多核是否可以通过每个核心的产生进程来使用,或者它是一个我无法执行的操作系统任务控制

Bra*_*rad 12

这取决于.

异步发生的工作以及Node本身(例如IO操作)是多线程的.您的JavaScript应用程序在单个线程中运行.

在我看来,你需要启动多个进程的唯一时间是,你的绝大多数工作都是用直接的JavaScript完成的.Node的设计背后很少见,并且是为主要阻塞磁盘和网络的应用程序而构建的.

因此,如果您有一个典型的Node应用程序,其中您的JavaScript不是大部分工作,那么启动多个进程将无法帮助您使用多个CPU /核心.

但是,如果您有一个特殊的应用程序,您在主循环中执行大量工作,那么可能有多个进程可供您使用.

最简单的方法是在应用程序运行时监视CPU利用率.您必须根据每个应用程序决定什么是最好的.