node.js - 非阻塞http服务器中的阻塞代码

标签 node.js blocking nonblocking

比如我有一个http服务器,是node.js的,所以是非阻塞的。

对于每个请求都会做一次数据库操作。

我无法理解的是阻塞数据库操作和非阻塞数据库操作有什么区别?

既然 Web 服务器是非阻塞的,那么请求中的阻塞 DB 操作没有区别吗?

最佳答案

我猜你混淆了非阻塞和线程。如果你的nodejs在一个线程上运行,如果你收到多个请求,每个请求都需要访问数据库,在非阻塞状态下,nodejs只会请求数据库获取数据,不会等待数据库的响应并继续处理下一个请求,以阻塞的方式,只有线程,当它一次一个地回答 http 请求时,会导致请求超时。

编辑:您可以查看 this question 的答案,我想他的解释更好。

关于node.js - 非阻塞http服务器中的阻塞代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32304419/

相关文章:

javascript - 关系数据库设计到 mongoDB/mongoose 设计

javascript - DOM manip 被*之后*调用的长时间运行的函数阻塞?

asynchronous - poll/epoll 会阻塞吗?它与异步 IO 有何不同?

连接到套接字时似乎无法超时工作

javascript - 使用 NodeJS 实现自动化

node.js - 无法让 Yeoman 正常工作

node.js - 我在安装 noodle.js 时遇到此错误

c - 在医学图像重建实现中改善局部性并减少缓存污染

c++ - 抛出异常与返回码

java - 非阻塞 IO 和 HystrixObservableCommand