《深入浅出Node.js》读书笔记+个人思考(二):异步I/O
来源:互联网 发布:java中long转换成date 编辑:程序博客网 时间:2024/05/17 01:56
伴随着异步I/O的还有事件驱动和单线程,它们构成Node的基调
利用单线程,远离多线程死锁、状态同步等问题;利用异步I/O,让单线程远离阻塞,以更好地使用CPU
异步 I/O实现现状
类比:
- 点菜的人 -> 应用层
- 点菜员 -> 观测者
- 点菜 -> 事件
- 厨师(厨房) -> 系统内核
- 一个点菜台 -> 一I/O线程
操作系统对I/O的实现
- 阻塞I/O:点菜排队,你站在点菜台前点完菜后等待厨师把你的菜做好再到下一个人(肯德基)
非阻塞I/O:点菜排队,你点完菜后拿着小票在一边等待,下一个人来点菜(饭店)
- 使用轮播技术
- 大部分轮询技术:你需要不时地去点菜台询问菜是否做好了,期间不干别的事情
- epoll轮询技术:你站在一旁发呆,什么事也不干,菜烧好了有服务员叫号通知
理想的非阻塞异步I/O :
点完菜,拿着小票在一旁刷个微博,逛个朋友圈,菜做好了服务员叫号,你去取
现实的异步I/O:
到a点菜台点海鲜,拿个小票,到b点菜台点甜点,拿个小票……到一旁玩手机,哪个点菜台叫号了就去拿哪个
Node架构
Node的异步I/O
不多说,上图,最清晰
执行每次循环叫做Tick
可以想象每次厨师出来询问点菜员是否还有客人点菜,就和上图判断是否还有事件一样
fs.open 调用图解
这是一个例子
整个异步调用的流程
总结
每次不知道异步是啥东西,就想自己在饭店是怎么点菜的就行了
0 0
- 《深入浅出Node.js》读书笔记+个人思考(二):异步I/O
- 《深入浅出Node.js》读书笔记+个人思考(一):模块机制
- [读书笔记]深入浅出NodeJS——Node中的异步I/O
- 深入浅出Node.js(五):初探Node.js的异步I/O实现
- 深入浅出Node.js(五):初探Node.js的异步I/O实现
- 深入浅出Node.js(五):初探Node.js的异步I/O实现
- 深入浅出Node.js(五):初探Node.js的异步I/O实现
- 深入浅出Node.js(五):初探Node.js的异步I/O实现
- 深入浅出Node.js(五):初探Node.js的异步I/O实现
- 【深入浅出node.js】读书摘录3 - 异步I/O
- 《深入浅出Node.js》学习笔记——(三)异步I/O
- node.js 异步I/O
- Node.js 异步I/O
- 【深入浅出Node.js系列五】初探Node.js的异步I/O实现
- Node.js的异步I/O
- Node.js的异步I/O
- 关于对Node.js的“单线程非阻塞异步I/O”特点的个人理解
- 深入浅出Node.js读书笔记
- uva 10359Tiling
- 学习笔记20170312——JAVA解决农场母牛生baby的问题
- Linux达人养成计划I 笔记
- pycharm编辑器编写Python程序
- Qt 编译时出现“-1: error: LNK2019: unresolved external symbol "public: void __thiscall M”错误
- 《深入浅出Node.js》读书笔记+个人思考(二):异步I/O
- fp in scala 学习随记(1)
- 【nginx】负载配置
- ButterKnife源码分析(一)
- SQL语句大全
- 数位dp, Beautiful numbers
- ZOJ1516-Uncle Tom's Inherited Land
- 算法训练 寻找数组中最大值
- Linux Mysql5.7 安装