0
如果节点只有两个线程,一个执行主代码,另一个执行所有回调,如果回调是资源/时间密集型的,那么阻塞仍然会发生。在node.js中如何实现事件循环?
假设您拥有100,000个并发用户,并且对节点应用程序的每个客户端请求都会运行复杂且耗时的数据库查询(假设没有缓存完成),以后的用户在等待查询返回时会遇到阻塞情况吗?
function onRequest(request, response) {
//hypothetical database call
database.query("SELECT * FROM hugetable", function(data) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("database result: " + data);
response.end();
});
}
http.createServer(onRequest).listen(8888);
如果每个回调可以在其自己的线程上运行,那么这是一个非问题。但是,如果所有的回调都在一个单独的专用线程上运行,那么在这种情况下节点并没有真正帮助我们。