事件循环

Node采用的是单线程的处理机制(所有的I/O请求都采用非阻塞的工作方式),至少从Node.js开发者的角度是这样的。 而在底层,Node.js借助libuv来作为抽象封装层, 从而屏蔽不同操作系统的差异,Node可以借助libuv来来实现多线程。下图表示了Node和libuv的关系。

 

Libuv库负责Node API的执行。它将不同的任务分配给不同的线程,形成一个事件循环, 以异步的方式将任务的执行结果返回给V8引擎。可以简单用下面这张图来表示。

 
每一个I/O都需要一个回调函数——一旦执行完便推到事件循环上用于执行。

链接:https://www.jianshu.com/p/3416a0bf309c

posted @ 2019-12-02 11:10  安博主  阅读(165)  评论(0编辑  收藏  举报