gpt4 book ai didi

java - Nodejs 性能事件循环

转载 作者:行者123 更新时间:2023-12-03 11:45:21 25 4
gpt4 key购买 nike

articles claiming superior nodejs性能归因于其单线程事件循环。 我不是在寻求意见,我是在寻求机制解释

一个线程开始处理一个请求,进行一些计算,然后发现它需要从数据库中读取数据。这是异步完成的。不涉及延迟,线程可以继续...但是如果没有数据它应该做什么?

  • A1 回答“还不知道”?
  • A2 接受另一个请求吗?

A1 对我来说没什么意义。我可以想象客户端同时发出其他请求(例如在首次访问站点时加载多个资源),但一般来说不会。

A2 当它获取另一个请求时,它会丢失整个上下文。这个上下文被保存在 promise 中,当数据到达时, promise 将被实现,但是哪个线程处理这个 promise 呢?

  • B1 稍后相同的线程
  • B2 不同的线程。

在 B1 情况下,您可能很幸运,一些相关数据可能仍在线程的缓存中,但考虑到数据库请求需要几毫秒,恕我直言,增益很低。

情况 B2 实际上不等同于上下文切换吗?

最佳答案

答:Node.js 不会响应任何请求,除非您编写主动发送响应的代码。该代码是同步运行还是异步运行并不重要。
客户端(甚至服务器的网络堆栈)无法知道或关心异步是否同时发生。

B:只有一个 Node.js 线程,就这样。
当 Node.js 代码中启动的异步操作的响应到达时,Node.js 事件循环线程中会引发一个事件,并调用适当的回调/处理程序。

关于java - Nodejs 性能事件循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com