Multithreading Node JS是否限制每个打开的HTTP连接只能有一个线程?
Node JS可以在一个HTTP端口上有多个线程为HTTP客户端服务吗?这是为了处理一些线程正在等待数据库或执行一些繁重处理的情况。这不应该干扰其他线程的快速操作,比如加载图像。节点不会等待数据库,这就是重点。节点是非阻塞的、事件驱动的。它设置了一个回调,并继续循环,为下一个请求做好准备。它不只是坐在那里,等待数据库返回请求的信息。Node.js使用一个,所有被阻止的都使用(请参见幻灯片63)。不过,你也不必担心这一点。您应该只提供对异步操作的回调。当操作完成时调用它 以以下代码段为例:Multithreading Node JS是否限制每个打开的HTTP连接只能有一个线程?,multithreading,node.js,Multithreading,Node.js,Node JS可以在一个HTTP端口上有多个线程为HTTP客户端服务吗?这是为了处理一些线程正在等待数据库或执行一些繁重处理的情况。这不应该干扰其他线程的快速操作,比如加载图像。节点不会等待数据库,这就是重点。节点是非阻塞的、事件驱动的。它设置了一个回调,并继续循环,为下一个请求做好准备。它不只是坐在那里,等待数据库返回请求的信息。Node.js使用一个,所有被阻止的都使用(请参见幻灯片63)。不过,你也不必担心这一点。您应该只提供对异步操作的回调。当操作完成时调用它 以以下代码段为例: fun
function(channel,message)
例如是在事件发生时调用的回调函数之一
function (channel, message) {
console.log("client1 channel " + channel + ": " + message);
msg_count += 1;
if (msg_count === 3) {
client1.unsubscribe();
client1.end();
client2.end();
}
}
如果您想让多个工作进程在同一端口上侦听(如果您有多个内核,这一点最有用),请查看。文档中的示例:
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);
}