我不是Node程序员,但我对单线程非阻塞IO模型是如何工作的很感兴趣。在我读了understanding-the-node-js-event-loop这篇文章后,我真的对它感到困惑。它给出了一个模型的例子:
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();
}
);
SQL:当有两个请求A(最先出现)和B时,因为只有一个线程,所以服务器端程序将首先处理请求A:执行查询是休眠语句,代表I/O等待。并且程序被阻塞在I/O
等待处,并且不能执行呈现后面的网页的代码。在等待期间,程序会切换到请求B吗?在我看来,由于单线程模型,无法从一个请求切换到另一个请求。但是示例代码的标题显示,除了代码之外,所有的代码都是并行运行的。
(P.S我不确定我是否误解了代码,因为我从来没有使用过Node.) Node在等待过程中如何将A切换到B?你能简单地解释一下Node的单线程非阻塞IO模型吗?如果你能帮助我,我将不胜感激。:)
https://stackoverflow.com/questions/14795145
复制相似问题