深入浅出Node.js – 异步I/O

21次阅读

共计 408 个字符,预计需要花费 2 分钟才能阅读完成。

异步 I /O
异步 I / O 与非阻塞 I /O

从计算机内核 I / O 而言,同步 / 异步和阻塞 / 非阻塞是两个不同的概念。
操作系统内核对于 I / O 只有两种方式,阻塞和非阻塞。
阻塞 I / O 的特点是调用之后一定要等到系统内核层面完成所有操作后,调用才结束,阻塞 I / O 造成了 CPU 等待 I /O,浪费了 CPU 的处理能力。非阻塞 I / O 与阻塞 I / O 的区别是调用之后会立即返回。
非阻塞 I / O 返回后,CPU 可以用来处理其他事情,此时性能提升是明显的。非阻塞 I / O 返回时,并没有获取到完整的数据,应用程序需要重复调用 I / O 操作来确认是否完成,这种重复调用判断操作是否完成的技术叫做轮询。
阻塞 I / O 造成 CPU 等待浪费,非阻塞 I / O 需要轮询判断数据是否获取完毕,也会浪费 CPU 资源。
现存的轮询技术主要有:

read 它是最原始,性能最低的一种,通过重复调用来检查 I / O 的状态来完成数据的读取。在得到数据之前 CPU 一直耗在等待上。
select
poll
epoll
kqueue

正文完
 0