node.js入门 - 6.I/O模式
我们按照执行的方式,把I/O分为串行I/O和并行I/O。串行I/O是完成当前I/O之后,才会去执行下一个I/O。并行I/O要复杂些,但是更容易理解,就是几个I/O同时运行。有一点需要提醒的是,在串行I/O中一般是按照请求队列的顺序来执行请求的,并以这个顺序返回结果。并行I/O返回的结果没有任何的顺序可言。串行I/O和并行I/O可以组合起来工作,例如:有多组并行I/O,每组中包含不同数目的串行I/O。
在Node中我们假设所有的I/O无限延迟的,他们可能执行0到无限的时间,我们不知道也不能假设他们具体的执行时长。与其等待他们执行完毕,我们不如使用基于事件模式,当I/O执行完毕时使用回调函数来响应结果。因此,使用并行I/O是更理想的解决方案,我们可以执行多个请求,按照他们执行完毕的顺序返回结果。
所以我们现在有两种方式去处理I/O:顺序串行处理和非顺序的并行处理。顺序的并行处理也是一种有用的模式,当我们允许I/O并行运行,并使用原有顺序返回结果时可以使用这种方式。非顺序的串行没有益处,我们就不讨论了。
note:
感觉这部分内容似曾相识,以前学习操作系统的运行方式,还有学习多线程编程的时候,也有类似的概念或者实现方式。大家对那些知识比较熟悉的话,理解这块知识肯定会容易的多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构