node.jsNodejs

了不起的NodeJS(一)

2016-10-07  本文已影响134人  我就是L

Node 异步IO、事件循环、非阻塞IO、回调

异步IO调用示意图
IO被为文件读写,而文件被抽象为磁盘、网络套接字、硬件等资源。

异步IO.png

基于操作系统的IO方式

NodeJS的异步IO实现
NodeJs在*nix下自定义线程池实现异步IO,windows下通过IOCP实现,IOCP底层也是线程池,不过这些线程池是被系统内核管理的。


异步IO实现.png

事件循环
每当启动Node进程时,自动创建一个类似while(true)循环,每次执行事件循环的过程称为Tick,每次Tick就是检查是否有事件等待处理,如果有就取出,并且执行关联的回调函数,然后下次Tick;如果不再有则退出循环。

事件循环是一个消费者/生产者模式,根据不同的事件分为不同的观察者,异步IO、网络请求源源不断的为观察者送入事件,事件循环则从观察者取出事件,并执行。

事件循环TICK流程图.png

NodeJs实现异步IO的过程
组装请求对象 -> 放入线程池等待执行 -> 回调通知

Node异步IO实现过程.png
上一篇下一篇

猜你喜欢

热点阅读