首页 > 解决方案 > 集群和分叉是一样的吗?

问题描述

看了很多node.js系统,有点迷糊。

我有一个 4 核 CPU。

在 node.js 中,要创建一个新线程,我应该这样做

var child = require('child_process').fork('child.js');
child.on("message", function(){});

所以我的图片是这样的:

cpu #0:
  thread #0
  thread #1
  thread #2
  thread #3
cpu #1
  thread #0
  thread #1
  thread #2
  thread #3
so on..

我对么?集群是否只创建线程?

标签: node.jsprocesscluster-computing

解决方案


这将在 cpu #0 下的新线程上运行代码。

错误的。操作系统将确定它在哪个内核上运行(它可能并不总是在同一个内核上)。这完全是操作系统的事情。请记住,操作系统正在处理/分配所有线程,而不仅仅是 node.js 线程。

child_process.fork至于和之间的区别cluster......来自node.js集群文档

工作进程是使用 child_process.fork() 方法生成的,因此它们可以通过 IPC 与父进程通信并来回传递服务器句柄。

所以集群实际上是用来 child_process.fork开始的。

但它在此之上添加了额外的功能:例如,如果您正在运行一个 http 服务器,集群可以在子进程之间“分发传入连接”。因此,如果您没有将它用于需要分发传入连接的东西,您可能不需要cluster.


推荐阅读