在Node.js中我们讨论了事件循环,所以我想知道我们正在讨论哪个事件循环,Javascript事件循环或libuv事件循环? 我想libuv事件循环为多路复用i / o的多个操作系统提供抽象?我对吗?如果不是这样,请解释这些东西是如何工作的我需要一些内部知识,我知道事件循环是什么,我只是想知道它是如何连接的?
答案 0 :(得分:3)
当前Node使用libuv提供的事件循环 - 即其默认事件循环:uv_default_loop()
。见:Nikhil Marathe的An Introduction to libuv:
libuv提供了一个默认循环,可以使用 uv_default_loop()。如果你只想要一个,你应该使用这个循环 循环。
注意:node.js使用默认循环作为其主循环。如果你是 写作绑定你应该知道这一点。
libuv API文档中的Design overview页面上有一个linuv架构图:
过去,在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