事件循环

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

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

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

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

原文地址:https://www.cnblogs.com/anbozhu7/p/11969473.html