我读过一篇文章,说Node.js是单线程的。问题是,如果我们在不同的端口中运行多个Node.js文件,该怎么办?它们是否有自己的线程,或者全部都在主Node.js线程下?有人可以向我阐明我现在处于黑暗面的问题上有所启发。
http://nodejs.org/api/cluster.html
Node的单个实例在单个线程中运行。为了利用多核系统,用户有时会希望启动Node进程集群来处理负载。
群集模块使您可以轻松创建所有共享服务器端口的子进程。
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);
}
这意味着您必须自己架构,所以如果您想在不同的线程中监听不同的端口,请使用cluster
或child_process
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句