首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >单线程非阻塞IO模型在Node.js中的工作方式

单线程非阻塞IO模型在Node.js中的工作方式
EN

Stack Overflow用户
提问于 2013-02-10 13:54:17
回答 8查看 111.8K关注 0票数 341

我不是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模型吗?如果你能帮助我,我将不胜感激。:)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14795145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档