Multithreading Node.js是单线程的,这是否意味着我们不能在不同的线程中运行多个Node.js?

Multithreading Node.js是单线程的,这是否意味着我们不能在不同的线程中运行多个Node.js?,multithreading,node.js,Multithreading,Node.js,我在一篇文章中读到Node.js是单线程的。问题是如果我们在不同的端口上运行多个Node.js文件会怎么样?它们是否有自己的线程,或者所有线程都将位于main Node.js线程下? 有人能告诉我这个问题吗?我现在处于黑暗面。 节点的单个实例在单个线程中运行。为了利用多核系统,用户有时需要启动一组节点进程来处理负载 群集模块允许您轻松创建所有共享服务器端口的子进程 var cluster = require('cluster'); var http = require('http'); var

我在一篇文章中读到Node.js是单线程的。问题是如果我们在不同的端口上运行多个Node.js文件会怎么样?它们是否有自己的线程,或者所有线程都将位于main Node.js线程下? 有人能告诉我这个问题吗?我现在处于黑暗面。

节点的单个实例在单个线程中运行。为了利用多核系统,用户有时需要启动一组节点进程来处理负载

群集模块允许您轻松创建所有共享服务器端口的子进程

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', function(worker, code, signal) {
    console.log('worker ' + worker.process.pid + ' died');
  });
} else {
  // Workers can share any TCP connection
  // In this case its a HTTP server
  http.createServer(function(req, res) {
    res.writeHead(200);
    res.end("hello world\n");
  }).listen(8000);
}
var cluster=require('cluster');
var http=require('http');
var numpus=require('os').cpus().length;
if(cluster.isMaster){
//叉工。
对于(变量i=0;i
这意味着您必须自行构建,因此,如果您想在不同线程中侦听不同的端口,可以使用
集群
子进程

节点的单个实例在单个线程中运行。为了利用多核系统,用户有时需要启动一组节点进程来处理负载

群集模块允许您轻松创建所有共享服务器端口的子进程

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', function(worker, code, signal) {
    console.log('worker ' + worker.process.pid + ' died');
  });
} else {
  // Workers can share any TCP connection
  // In this case its a HTTP server
  http.createServer(function(req, res) {
    res.writeHead(200);
    res.end("hello world\n");
  }).listen(8000);
}
var cluster=require('cluster');
var http=require('http');
var numpus=require('os').cpus().length;
if(cluster.isMaster){
//叉工。
对于(变量i=0;i
这意味着您必须自行构建,因此如果您想在不同线程中侦听不同的端口,可以使用
集群
子进程

问题是如果我们在不同的端口上运行多个Node.js文件会怎么样?它们是否有自己的线程,或者所有线程都将位于main Node.js线程下

从您的问题来看,我觉得您实际上启动了Node.js的多个进程。在这些情况下,它们将像系统上的任何其他多进程集一样工作,并且您的操作系统将尝试在所有内核和/或CPU之间平衡负载

我在一篇文章中读到Node.js是单线程的

这有点复杂。虽然Node.js使用的V8 JavaScript引擎在一个线程中运行JavaScript,但Node.js库中的许多库调用本机代码,这些代码可以使用任意多个线程。Node.js的这些内部组件使用线程池和多线程处理磁盘和网络IO以及其他任务

Node.js真正引人注目的应用程序是那些典型的IO绑定应用程序。在这些情况下,您可以从多线程中获得很多好处,而无需为此编写任何代码。例如,当您向disk Node发出多个请求时,js将使用多个线程来处理该数据的缓冲和管理,同时不会阻塞主JavaScript线程

在我的许多应用程序中,我发现我可以充分利用8核机箱,而无需编写任何代码来启动子进程。节点的内部多线程为我完成了所有工作。您的里程数因应用而异

我对过去的一个问题做了不同的解释,你可能会觉得有帮助:

问题是如果我们在不同的端口上运行多个Node.js文件会怎么样?它们是否有自己的线程,或者所有线程都将位于main Node.js线程下

从您的问题来看,我觉得您实际上启动了Node.js的多个进程。在这些情况下,它们将像系统上的任何其他多进程集一样工作,并且您的操作系统将尝试在所有内核和/或CPU之间平衡负载

我在一篇文章中读到Node.js是单线程的

这有点复杂。虽然Node.js使用的V8 JavaScript引擎在一个线程中运行JavaScript,但Node.js库中的许多库调用本机代码,这些代码可以使用任意多个线程。Node.js的这些内部组件使用线程池和多线程处理磁盘和网络IO以及其他任务

Node.js真正引人注目的应用程序是那些典型的IO绑定应用程序。在这些情况下,您可以从多线程中获得很多好处,而无需为此编写任何代码。例如,当您向disk Node发出多个请求时,js将使用多个线程来处理该数据的缓冲和管理,同时不会阻塞主JavaScript线程

在我的许多应用程序中,我发现我可以充分利用8核机箱,而无需编写任何代码来启动子进程。节点的内部多线程为我完成了所有工作。您的里程数因应用而异


我对过去的一个问题做了不同的解释,你可能会发现这个问题很有帮助:

@phpGeek请看,答案与使用多核处理器有关,通过分岔进程。因此,这里不涉及线程。基本上,您不能在Node.js中创建线程。但在这篇文章中,TruongSinh的回答解释了如何通过从
主进程
分叉
子进程
来利用多核。对于端口,它在他的回答中
子进程共享服务器端口
@phpGeek if