Nodejs Event Loop 事件循环机制


文章目录



什么是事件循环 Event loop

事件循环是 Node.js 处理非阻塞 I/O 操作的机制——尽管 JavaScript 是单线程处理的——当有可能的时候,它们会把操作转移到系统内核中去。

既然目前大多数内核都是多线程的,它们可在后台处理多种操作。
当其中的一个操作完成的时候,内核通知 Node.js 将适合的回调函数添加到 轮询 队列中等待时机执行.


工作机制是什么样的?

Client 请求到达 node api,该请求被添加到Event Queue(事件队列)[这是因为Node.js 无法同时处理多个请求]

Event Loop(事件循环) 始终检查事件队列中是否有待处理事件,如果有就从 Event Queue 中从前到后依次取出,然后处理.

因为Event Loop 是单线程非阻塞I/O,它会把请求发送给 C++ Thread Pool(线程池)去处理,底层是基于C++ Libuv 异步I/O模型结构可以支持高并发.

现在 C++ Thread Pool有大量的请求,如数据库请求,文件请求等

任何线程完成任务时,Callback(回调函数)就会被触发,并将响应发送给 Event Loop

处理完成,最终 Event Loop 会将请求返回给 Client.

出自:Nodejs Event Loop 事件循环机制

回到顶部