《深入浅出nodejs》异步i/o笔记(1)
来源:互联网 发布:满族饮食 知乎 编辑:程序博客网 时间:2024/05/20 08:43
阻塞I/O:
调用之后一定要等到系统内核层面完成所有的操作,调用才会结束。
eg: 读取文件----
内核在完成磁道寻盘、读取数据、复制数据到内存之后,调用才算结束。
非阻塞I/O:
调用之后立即返回。
① 操作系统将所有的输入输出设备抽象为文件。
② 进行文件操作时,通过文件描述符进行管理,文件描述符类似于应用程序与系统内核之间的凭证。
③ 过程:
A:I/O调用----打开文件描述符
B:文件描述符实现文件的数据读写
非阻塞: 不带数据直接返回,通过文件描述符才能再次读取数据
阻塞: 完成整个获取数据过程。
C:非阻塞返回之后,CPU时间片继续完成其他事务。
返回当前调用的状态。
(非阻塞)
D: 通过轮询重复调用I/O操作确认完成获取完整数据
ps:轮询
read
select (1024长度)
poll (链表存储,避免数组长度的限制)
epoll (linux I/O通知效率最高机制)
轮询没有检查到事件,进入休眠
事件发生唤醒休眠
kqueue FreeBSD系统下存在
我之前一直觉得非阻塞和异步是一样的,但是书上说不一样。但是也没有给我准确的解释,看完了这一章,我有点明白了,但是还是有些说不清楚。所以我又去百度了一下同步和异步。
异步Asynchronous: 无需等待调用函数方法/对象的返回值就返回继续执行其他事务
调用之后一定要等到系统内核层面完成所有的操作,调用才会结束。
eg: 读取文件----
内核在完成磁道寻盘、读取数据、复制数据到内存之后,调用才算结束。
非阻塞I/O:
调用之后立即返回。
① 操作系统将所有的输入输出设备抽象为文件。
② 进行文件操作时,通过文件描述符进行管理,文件描述符类似于应用程序与系统内核之间的凭证。
③ 过程:
A:I/O调用----打开文件描述符
B:文件描述符实现文件的数据读写
非阻塞: 不带数据直接返回,通过文件描述符才能再次读取数据
阻塞: 完成整个获取数据过程。
C:非阻塞返回之后,CPU时间片继续完成其他事务。
返回当前调用的状态。
(非阻塞)
D: 通过轮询重复调用I/O操作确认完成获取完整数据
ps:轮询
read
select (1024长度)
poll (链表存储,避免数组长度的限制)
epoll (linux I/O通知效率最高机制)
轮询没有检查到事件,进入休眠
事件发生唤醒休眠
kqueue FreeBSD系统下存在
我之前一直觉得非阻塞和异步是一样的,但是书上说不一样。但是也没有给我准确的解释,看完了这一章,我有点明白了,但是还是有些说不清楚。所以我又去百度了一下同步和异步。
异步Asynchronous: 无需等待调用函数方法/对象的返回值就返回继续执行其他事务
同步Synchronous : 与异步相反
想了想,我觉得异步比较宏观,对于系统来说,调用了这个方法,但是直接就可以返回算是异步,比较像一个概括者说需要异步
非阻塞就比较细节,对于系统内核来说,如果一次性将I/O文件读取完毕就用到了阻塞,比如上面提到的那样。
有想法请和我交流~ 谢谢。
0 0
- 《深入浅出nodejs》异步i/o笔记(1)
- 《深入浅出nodejs》异步I/O笔记(2)
- 深入浅出NodeJS——异步I/O
- 深入浅出nodejs学习笔记-前三章 简介、模块机制、异步I/O
- [读书笔记]深入浅出NodeJS——Node中的异步I/O
- Nodejs 异步 I/O
- nodejs-异步I/O
- NodeJS -- 异步I/O
- nodejs之异步I/O
- NodeJS异步I/O解析
- 深入浅出异步I/O模型
- 深入浅出异步I/O模型
- 深入浅出异步I/O模型
- NodeJS学习笔记(一)——异步I/O的理解
- 《深入浅出Node.js》学习笔记——(三)异步I/O
- nodejs 异步I/O和事件驱动
- NodeJS中的异步I/O、事件驱动
- nodejs 非异步I/O API
- ScrollView嵌套listView解决方案
- 表格之删除功能
- ubuntu安装ssh服务
- idea Mac 2017.1激活
- Head First SQL 第八章
- 《深入浅出nodejs》异步i/o笔记(1)
- svn不能打开 系统找不到
- Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解
- 欢迎使用CSDN-markdown编辑器
- file_get_contents failed to open stream: Permission denied in xxx解决办法
- oracle中merge into语句详解
- c++ 字符串流 sstream(常用于格式转换)
- OpenCV操作矩阵
- 使用ambari扩展hdfs节点