比如我有一个http服务器,是node.js的,所以是非阻塞的。
对于每个请求都会做一次数据库操作。
我无法理解的是阻塞数据库操作和非阻塞数据库操作有什么区别?
既然 Web 服务器是非阻塞的,那么请求中的阻塞 DB 操作没有区别吗?
最佳答案
我猜你混淆了非阻塞和线程。如果你的nodejs在一个线程上运行,如果你收到多个请求,每个请求都需要访问数据库,在非阻塞状态下,nodejs只会请求数据库获取数据,不会等待数据库的响应并继续处理下一个请求,以阻塞的方式,只有线程,当它一次一个地回答 http 请求时,会导致请求超时。
编辑:您可以查看 this question 的答案,我想他的解释更好。
关于node.js - 非阻塞http服务器中的阻塞代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32304419/