node.js之---单线程异步非阻塞 I/O

单线程模型

1、Node.js 使用 单线程 来处理客户端请求和执行任务

2、如果遇到异步任务,node.js使用事件循环 和**异步 I/O 模型,**使得它能够高效地处理大量并发请求

异步操作有哪些

1、读取文件

2、网络请求

3、数据库操作等等

异步非阻塞 I/O

Node.js 中的 I/O 操作 (如文件读取、网络请求、数据库查询等)是 异步 的,这意味着这些操作会被立即发起,Node.js 会继续执行其他任务,而不会等待 I/O 操作完成。操作完成后,Node.js 会通过 回调函数(callback)通知应用程序。

  • 异步(Asynchronous):异步操作的特点是调用后不会等待其结果,而是立即返回,继续执行后续代码,待操作完成后再通过回调通知处理结果。
  • 非阻塞(Non-blocking):非阻塞意味着 I/O 操作不会阻塞程序的执行。即使正在执行 I/O 操作,主线程也不会被"卡住",它会继续执行后续代码。

异步非阻塞 I/O的特点

1、非阻塞性

2、异步性

3、提高并发能力

  • 由于 I/O 操作不会阻塞主线程或进程,多个 I/O 操作可以并行执行,不需要为每个请求创建新的线程或进程。这使得系统能够处理大量并发请求,而不会因为 I/O 操作而导致性能下降或资源浪费。
  • 常见于需要处理高并发的场景,如 Web 服务器、数据库查询、实时通信等。

4、节省系统资源

5、事件驱动

  • 异步非阻塞 I/O 操作通常是事件驱动的。应用程序通过事件循环来监听和处理 I/O 操作的完成。当 I/O 操作完成时,操作系统或底层框架会触发事件,程序通过回调函数来处理结果。
  • 这种方式常见于基于事件循环的框架,如 Node.js

6、延迟执行

相关推荐
Bigger9 小时前
Bun 能上生产吗?我的实战结论
前端·node.js·bun
不会敲代码112 小时前
从零搭建 RAG 电子书智能问答系统:天龙八部 × Milvus × LangChain
langchain·node.js·llm
donecoding2 天前
nrm、corepack、npm registry 三者的爱恨情仇
前端·node.js·前端工程化
明月_清风2 天前
关于node 模块化的现状与未来
前端·node.js
李白的天不白3 天前
webpack 与 webpack-cli 版本匹配问题
前端·webpack·node.js
李白的天不白3 天前
webpack 与axios 版本冲突问题
前端·webpack·node.js
donecoding3 天前
pnpm 全局包与 nvm 的真相:命令永在,运行时随缘
node.js·claude
老蒋每日coding3 天前
Node.js 安装指南(Mac 版本)
macos·node.js
吴声子夜歌4 天前
Node.js——JSON-Server轻量级RESTful API
node.js·json·restful·json-server