node.js中的事件循环是什么意思? javascript事件循环或libuv事件循环?

在Node.js中,我们讨论了事件循环,所以我想知道我们正在讨论哪个事件循环,Javascript事件循环或libuv事件循环? 我猜libuv事件循环提供了多路复用I / O操作系统的抽象? 我对吗? 如果不是,请解释这个东西是如何工作的? 我需要一些内部知识,我知道事件循环是什么,我只想知道它是如何连接的?

当前Node使用libuv提供的事件循环 – 也就是它的默认事件循环: uv_default_loop() 。 参见:Nikhil Marathe 介绍 libuv:

默认循环由libuv提供,可以使用uv_default_loop()来访问。 如果你只需要一个循环,你应该使用这个循环。

注意:node.js使用默认循环作为其主循环。 如果你正在编写绑定,你应该知道这一点。

在libuv API文档的Design overview页面上有一个linuv架构图:

libuv架构

过去,Node中使用了libev的事件循环。 请参阅由Mikito Takada 了解node.js事件循环 :

在内部,node.js依赖于libev来提供事件循环,这是libeio的补充,它使用池化线程来提供asynchronousI / O。 要了解更多信息,请查看libev文档。

Node事件循环中的一些很好的资源:

  • 通过Mikito Takada 了解node.js事件循环
  • 通过FelixGeisendörfer 了解node.js
  • 了解 Trevor Norris 的Node.js事件循环
  • Node.js本身就是阻塞的,只有它的I / O不被Jeremy Epstein 阻塞
  • Nikhil Marathe 介绍 libuv
  • libuv API文档

感谢SaúlIbarraCorretgé在评论中的澄清。