Node.js数据库访问是否阻止主线程?

时间:2015-08-06 21:58:12

标签: javascript node.js multithreading

我在node.js上读了很多内容,我对node.js服务器中的线程阻塞构成了一点困惑,在这种情况下连接到db(heroku postgres)

以例如:

app.get('/search', function(req, res){
    var id = req.query.q;
    **connect to db find items**
         callback ------> **another db transaction**
                    callback ------> res.json({some:data});

});

我的问题是,这是否会阻止主线程?与npm模块交互的所有内容是否都会通过事件循环抛出,因此不会阻塞?是否有一般规则或一套准则来定义什么是线程阻塞?什么不是线程阻塞?

2 个答案:

答案 0 :(得分:0)

通常情况下,大多数名称不会在Sync中结束并接受回调,返回EventEmitter,返回Promise等等的函数都是异步的。这与一般的规则很接近"因为这些天来了。但是,要完全确定,您应该参考模块的文档。

对于Postgres(pg模块),连接,查询等都是异步完成的,不会阻塞主线程。

答案 1 :(得分:0)

除了mscdex的答案之外,任何直接返回你想要的值的函数(不是通过回调/ promise / etc)肯定会阻塞该线程。

相关问题