如何';集群&x27;和';工作线程';在Node.js中工作?

如何';集群&x27;和';工作线程';在Node.js中工作?,node.js,process,v8,core,clusterize,Node.js,Process,V8,Core,Clusterize,我是否理解正确:如果我使用clusterpackage,这是否意味着 是否为每个已创建的辅助进程创建一个新节点实例 集群和工作线程包之间有什么区别 实际上,您的不同之处在于基于进程与基于线程。线程共享内存(例如,SharedArrayBuffer),而进程不共享内存。本质上,它们绝对是同一件事 每个CPU上启动一个进程,并可通过进行通信 每个进程都有自己的内存和自己的节点(v8)实例。创建大量内存可能会导致内存问题 非常适合生成共享同一端口b/c的许多HTTP服务器。主进程将把请求多路传输到

我是否理解正确:如果我使用
cluster
package,这是否意味着 是否为每个已创建的辅助进程创建一个新节点实例

  • 集群
    工作线程
    包之间有什么区别


  • 实际上,您的不同之处在于基于进程与基于线程。线程共享内存(例如,
    SharedArrayBuffer
    ),而进程不共享内存。本质上,它们绝对是同一件事

    • 每个CPU上启动一个进程,并可通过进行通信
    • 每个进程都有自己的内存和自己的节点(v8)实例。创建大量内存可能会导致内存问题
    • 非常适合生成共享同一端口b/c的许多HTTP服务器。主进程将把请求多路传输到子进程

    • 一道工序总计
    • 创建多个线程,每个线程有一个节点实例(一个事件循环,一个JS引擎)。除少数线程外,大多数节点API可用于每个线程。所以本质上节点是嵌入自身并创建一个新线程
    • 与其他线程共享内存(例如,
      SharedArrayBuffer
    • 非常适合CPU密集型任务,如处理数据或访问文件系统。因为NodeJS是单线程的,所以同步任务可以通过worker变得更高效

    对于辅助线程:总共一个进程。这是否意味着要跨越多个V8实例?每个工作线程都有自己的V8实例和事件循环。这就是获得并行性的方式。他们称之为V8隔离。实际上,这是一个独立的V8运行时实例,它有自己的JS堆和一个微任务队列。因此,每个Node.js工作线程都可以独立运行其代码,而无需共享其堆。沟通;但是,通过子级和父级之间的消息通道发生。