单线程非阻塞IO模型是如何在Node.js中工作的我不是Node程序员,但我感兴趣的是单线程非阻塞IO模型起作用了。在我读了这篇文章之后理解-节点-js-事件循环我真的很困惑。它给出了一个模型的例子:c.query(
'SELECT SLEEP(20);',
function (err, results, fields) {
if (err) {
throw err;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<html><head><title>Hello</title></head><body><h1>Return from async DB query</h1></body></html>');
c.end();
});这里有个问题。当有两个请求A(首先)和B,因为只有一个线程,服务器端程序将首先处理请求A:执行SQL查询,这是一个代表I/O等待的睡眠语句。程序被放置在I/O等待时,无法执行呈现网页后面的代码。在等待过程中,程序会切换到请求B吗?在我看来,由于单线程模型,无法从另一个请求切换。但是示例代码的标题是“除了您的代码之外,所有东西都是并行运行的”。(我不知道我是否误解了代码,因为我从未使用过Node。)在等待过程中节点如何切换A到B?你能解释一下吗单线程非阻塞IO模型以一种简单的方式?如果你能帮我,我会很感激的。*)
3 回答
BIG阳
TA贡献1859条经验 获得超6个赞
在我看来,因为它是一个单线程模型,所以无法从一个请求切换到另一个请求。
编辑
打开到db的连接,就可以异步地建立连接本身。 连接db后,查询将传递给服务器。查询可以排队。 主事件循环通过回调或事件得到完成通知。 主循环执行回调/均衡器。
- 3 回答
- 0 关注
- 838 浏览
添加回答
举报
0/150
提交
取消