Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js中的事件循环是什么意思?javascript事件循环还是libuv事件循环?_Javascript_Node.js_Event Loop - Fatal编程技术网

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

node.js中的事件循环是什么意思?javascript事件循环还是libuv事件循环?,javascript,node.js,event-loop,Javascript,Node.js,Event Loop,在Node.js中,我们经常谈论事件循环,所以我想知道我们谈论的是哪个事件循环,Javascript事件循环还是libuv事件循环? 我猜libuv事件循环为多路复用I/o的多个操作系统提供了抽象?我说得对吗?如果不是,请解释一下这些东西是如何工作的?我需要一些内部知识,我知道什么是事件循环,我只想知道它是如何连接的?当前节点使用libuv提供的事件循环,即其默认事件循环:uv\u default\u loop()。见:作者:Nikhil Marathe: libuv提供了一个默认循环,可以使用

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

当前节点使用libuv提供的事件循环,即其默认事件循环:
uv\u default\u loop()
。见:作者:Nikhil Marathe:

libuv提供了一个默认循环,可以使用 uv_默认_循环()。如果只需要一个循环,则应使用此循环 循环

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

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

在过去,libev的事件循环用于Node。见Mikito Takada:

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

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

  • 高田三仁
  • 费利克斯·盖森德费尔
  • 特雷弗·诺里斯
  • 杰里米·爱泼斯坦
  • 尼希尔·马拉特

感谢Saúl Ibarra Corretgé在评论中的澄清。

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

我最近在这里制作了一段视频,详细解释如下:

在什么情况下?如果是其中一个,会有什么不同?你所说的“JavaScript事件循环”是什么意思?浏览器中的那个?是的,js事件循环:)@jjm每个不同的浏览器都以自己的方式实现事件循环。Node.js恰好使用libuv来实现javascript事件循环。本质上,我们一直在谈论javascript事件循环。它的实现方式只与用C/C++编写扩展的人有关。@slebetman你的意思是,node.js用libuv替换了v8事件循环?对不起,我不明白:(这是不正确的。libuv已经多年没有使用libev了。而且,即使使用了libev,这个图仍然是不正确的,因为thead不用于网络i/o,只是用于文件系统操作和getaddrinfo。您可以在libuv官方文档中找到正确的框图:@saghul非常感谢您的澄清。我更新了我的answ。)呃。如果还有什么需要纠正的,请告诉我。谢谢。现在好多了:-)随着多个隔离的引入,
uv\u default\u loop
的使用在未来也可能会改变,但目前情况仍然如此。感谢您更新了答案!所以当我们谈论事件循环时,我们指的是libuv事件循环?它不是关于javascript,对吗?javascript只是这个循环的一个接口?它只是一个coi确认javascript内部也有一个事件循环?对吗?如果我错了,请纠正我?当我看到node.js的图表时,它们显示了v8+事件循环,这意味着它们不是在谈论v8内部事件循环?