Node.js中事件循环是如何深入影响其性能和效率的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1871个文字,预计阅读时间需要8分钟。
Node.js 是单线程语言,通过事件循环处理非阻塞 I/O 操作。本文详细介绍了 Node.js 中的事件循环,希望对大家有所帮助!Node.js 作为 JavaScript 的服务端运行环境,主要与网络相关。
Node.js是单线程的语言,是通过事件循环处理非阻塞I/O操作的。下面本篇文章带大家详细了解 Node 中的事件循环,希望对大家有所帮助!
Node.js 做为 JavaScript 的服务端运行时,主要与网络、文件打交道,没有了浏览器中事件循环的渲染阶段。
在浏览器中有 HTML 规范来定义事件循环的处理模型,之后由各浏览器厂商实现。Node.js 中事件循环的定义与实现均来自于 Libuv。
Libuv 围绕事件驱动的异步 I/O 模型而设计,最初是为 Node.js 编写的,提供了一个跨平台的支持库。下图展示了它的组成部分,Network I/O 是网络处理相关的部分,右侧还有文件操作、DNS,底部 epoll、kqueue、event ports、IOCP 这些是底层不同操作系统的实现。
事件循环的六个阶段当 Node.js 启动时,它会初始化事件循环,处理提供的脚本,同步代码入栈直接执行,异步任务(网络请求、文件操作、定时器等)在调用 API 传递回调函数后会把操作转移到后台由系统内核处理。目前大多数内核都是多线程的,当其中一个操作完成时,内核通知 Node.js 将回调函数添加到轮询队列中等待时机执行。
本文共计1871个文字,预计阅读时间需要8分钟。
Node.js 是单线程语言,通过事件循环处理非阻塞 I/O 操作。本文详细介绍了 Node.js 中的事件循环,希望对大家有所帮助!Node.js 作为 JavaScript 的服务端运行环境,主要与网络相关。
Node.js是单线程的语言,是通过事件循环处理非阻塞I/O操作的。下面本篇文章带大家详细了解 Node 中的事件循环,希望对大家有所帮助!
Node.js 做为 JavaScript 的服务端运行时,主要与网络、文件打交道,没有了浏览器中事件循环的渲染阶段。
在浏览器中有 HTML 规范来定义事件循环的处理模型,之后由各浏览器厂商实现。Node.js 中事件循环的定义与实现均来自于 Libuv。
Libuv 围绕事件驱动的异步 I/O 模型而设计,最初是为 Node.js 编写的,提供了一个跨平台的支持库。下图展示了它的组成部分,Network I/O 是网络处理相关的部分,右侧还有文件操作、DNS,底部 epoll、kqueue、event ports、IOCP 这些是底层不同操作系统的实现。
事件循环的六个阶段当 Node.js 启动时,它会初始化事件循环,处理提供的脚本,同步代码入栈直接执行,异步任务(网络请求、文件操作、定时器等)在调用 API 传递回调函数后会把操作转移到后台由系统内核处理。目前大多数内核都是多线程的,当其中一个操作完成时,内核通知 Node.js 将回调函数添加到轮询队列中等待时机执行。

