Node.js中非阻塞IO和事件循环机制是如何协同工作的?

2026-04-05 19:430阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计891个文字,预计阅读时间需要4分钟。

Node.js中非阻塞I/O和事件循环机制是如何协同工作的?

Node.js的主要特点+单线程、非阻塞I/O、事件驱动,这三个特点是相互辅助的。

Node.js为了在低硬件服务器条件下实现高并发,尽量减少内存消耗,选择了单线程;

Node.js中非阻塞I/O和事件循环机制是如何协同工作的?

因为只有一个线程,所以必须非阻塞I/O,以避免阻塞主线程;

事件驱动则可以让Node.js高效地处理多个I/O操作,进一步提升并发能力。

Node.js的主要特点

单线程、非阻塞I/O、事件驱动,这三个特点是相辅相成的。

Node为了在低硬件服务器条件下高并发,所以减少了内存消耗,选择单线程;

因为只有一个线程,所以必须非阻塞I/O,每件事情都有回调函数;

为了合理调度,Node使用了事件环的机制,采用事件驱动来调度事件。

非阻塞I/O

I/O是输入(input)、输出(output)的简称。

阻塞I/O和非阻塞I/O的区别在于系统在输入与输出的期间,能不能接收输入。

举个例子:餐厅服务员招待客人

阻塞I/O:餐厅有多个服务员(多线程),一个服务员对应一个客人,客人从点菜到点菜结束的期间,服务员都会被闲置不做任何事情,直到这桌客人点完菜,服务员才能招待下一桌客人。

非阻塞I/O:餐厅有一个服务员(单线程),服务员招待一桌客人时,对客人说:“你先看下菜单,好了就叫我”。

阅读全文
标签:知识点

本文共计891个文字,预计阅读时间需要4分钟。

Node.js中非阻塞I/O和事件循环机制是如何协同工作的?

Node.js的主要特点+单线程、非阻塞I/O、事件驱动,这三个特点是相互辅助的。

Node.js为了在低硬件服务器条件下实现高并发,尽量减少内存消耗,选择了单线程;

Node.js中非阻塞I/O和事件循环机制是如何协同工作的?

因为只有一个线程,所以必须非阻塞I/O,以避免阻塞主线程;

事件驱动则可以让Node.js高效地处理多个I/O操作,进一步提升并发能力。

Node.js的主要特点

单线程、非阻塞I/O、事件驱动,这三个特点是相辅相成的。

Node为了在低硬件服务器条件下高并发,所以减少了内存消耗,选择单线程;

因为只有一个线程,所以必须非阻塞I/O,每件事情都有回调函数;

为了合理调度,Node使用了事件环的机制,采用事件驱动来调度事件。

非阻塞I/O

I/O是输入(input)、输出(output)的简称。

阻塞I/O和非阻塞I/O的区别在于系统在输入与输出的期间,能不能接收输入。

举个例子:餐厅服务员招待客人

阻塞I/O:餐厅有多个服务员(多线程),一个服务员对应一个客人,客人从点菜到点菜结束的期间,服务员都会被闲置不做任何事情,直到这桌客人点完菜,服务员才能招待下一桌客人。

非阻塞I/O:餐厅有一个服务员(单线程),服务员招待一桌客人时,对客人说:“你先看下菜单,好了就叫我”。

阅读全文
标签:知识点