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

问题描述 投票:1回答:2

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

javascript node.js event-loop
2个回答
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个事件循环,而是事件循环的不同实现。例如,Chrome浏览器使用V8 JS引擎的事件循环。 NodeJS使用V8引擎但不是它的事件循环 - 它使用Libuv事件循环。

我最近在这里做了一个详细解释的视频:The libuv API documentation

© www.soinside.com 2019 - 2024. All rights reserved.