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

时间:2016-07-25 15:54:04

标签: javascript node.js event-loop

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

2 个答案:

答案 0 :(得分:3)

当前Node使用libuv提供的事件循环 - 即其默认事件循环:uv_default_loop()。见:Nikhil Marathe的An Introduction to libuv

  

libuv提供了一个默认循环,可以使用   uv_default_loop()。如果你只想要一个,你应该使用这个循环   循环。

     

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

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

libuv architecture

过去,在Node中使用了libev的事件循环。见Mikito Takada的Understanding the node.js event loop

  

在内部,node.js依赖libev来提供事件循环   由libeio补充,使用汇集的线程来提供   异步I / O.要了解更多信息,请查看libev   文档。

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

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

答案 1 :(得分:1)

不仅有1个事件循环,而且取决于上下文,事件循环的不同实现。例如,Chrome浏览器使用V8 JS引擎的事件循环。 NodeJS使用V8引擎,但不使用事件循环-它使用Libuv事件循环。

我最近在这里制作了一个带有详细说明的视频: https://www.youtube.com/watch?v=4xsvn6VUTwQ