异步I/O

异步I/O的实现现状

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

阻塞I/O和非阻塞I/O。
阻塞I/O:一定要等到系统内核层面完成所有操作后,调用才结束。
会造成CPU的处理能力不能充分使用。
非阻塞I/O:直接返回,性能提升明显;
但是不带数据返回。
轮训的演变:
read:I/O状态进行判断。
select:文件描述符状态进行判断,最多检查1024个文件的描述符
poll:对select改进,采用链表。
epoll:在进入轮询时如果没有检查到I/O时间,将会进入休眠,直到事件将它唤醒。
Node:线程池原理。
NodeJS是单线程:只是JavaScript执行在单线程总,在Node中,无论是*nix还是Windows平台,内部完成I/O的另有线程池。

Node中的异步I/O

完整实现整个异步I/O环节的有事件循环、观察者模式和请求对象。

事件循环
观察者
请求对象
执行回调
非I/O的异步API

setTimeout()、setInterval()、setImmediate()、process.nextTick()
setTimeout()、setInterval():使用红黑树,创建定时器和迭代
process.nextTick():idle观察者:直接把回调放入队列中,在下一个tick执行。
setImmediate():check观察者。类似于process.nextTick()

本文结束啦感谢您的阅读
undefined