今天早些时候,我用这个答案回答了一个问题。在我发布的示例中,我在 bcrypt 节点模块中使用了同步版本的调用。我选择使用同步版本的调用主要是因为我认为它使响应看起来更清晰,但我也不认为它会影响性能,因为 bcrypt 是 cpu 和内存密集型而不是 I/O 绑定。据我了解,node 几乎像浏览器一样在单个线程上运行您的所有代码,并且只将后台线程用于 I/O 和数据库访问等事情。这让我相信 CPU 密集型任务本质上仍然会“阻塞”服务器,因为没有其他线程可以卸载工作。
对我的回复的评论表明我的假设是错误的,经过一些研究,我意识到我并没有真正了解 node.js 如何处理这类事情。node.js 中的异步编程是否会加速 CPU 和内存密集型调用?如果是这样,它是如何做到的?