我已经阅读了很多nodejs系统,我有点困惑。
我有4个cpu内核。
在nodejs中, 要创建新线程,我应该做
var child = require('child_process').fork('child.js');
child.on("message", function(){});
cluster
吗?fork
和cluster
吗?cluster
使用fork
,那么基本上它仅创建4个线程? -对吗?process.id
是真实的进程ID,不是线程吗?不是线程ID? 所以我的照片是:
cpu #0:
thread #0
thread #1
thread #2
thread #3
cpu #1
thread #0
thread #1
thread #2
thread #3
so on..
我可以吗? 集群是否仅创建线程?
答案 0 :(得分:0)
这将在cpu#0下的新线程上运行代码。
错了。操作系统将确定其在哪个内核上运行(并且可能不会始终保持在同一内核上)。这完全是操作系统的事情。并且请记住,操作系统正在处理/分配所有线程,而不仅仅是node.js线程。
关于child_process.fork
和cluster
之间的区别...来自node.js cluster documentation:
使用child_process.fork()生成工作进程。 方法,以便他们可以通过IPC与父级进行通信并通过 服务器来回处理。
因此群集实际上是使用的child_process.fork
开始的。
但是它在此之上添加了其他功能:例如,如果您正在运行http服务器,则集群可以在子进程之间“分配传入连接”。因此,如果您不将它用于需要分配传入连接的事物,则可能不需要cluster
。