看这篇文章的时候对以下这句话不理解,求指教。 文章:http://cnodejs.org/topic/50462f51329c5139760bff98#528c7479d2b3893f2ab4939e
“Apache是多线程的:它为每个请求开启一个新的线程(或者是进程,这取决于你的配置),当并发连接增多时,你可以看看它是怎么一点一点耗尽内存的。Nginx和Node.js不是多线程的,因为线程的消耗太“重”了。”
请问这句话怎么理解,难道node是一个线程处理多个请求? 比如有三个人同时访问一个node站点,这三个请求是一个线程处理还是三个线程处理?
写了段代码验证了一下,确实是一个线程处理多个请求,感谢各位。 下面这段代码 同时开两个标签页请求,第二个标签页会等10秒才显示hello
var http = require('http');
var wait = function(millisec) {
var now = new Date;
while(new Date - now <= millisec) ;
}
http.createServer(function(req, res){
wait(5000);
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('hello');
}).listen(3000);
6 回复
@zhs077 你说的另起一个线程是指NODE自己起的线程么?据我所知,只有I/O操作因为在linux下必然会导致阻塞,才会用libeio起线程来跑异步外,其他好像还真没有了,如果是用户自己想起的话,因为的V8是不允许多线程调用接口的,所以node的多线程应该还是很难见的吧?