首页 > 解决方案 > 为什么要避免使用事件循环来执行 CPU 密集型任务?

问题描述

在一篇教程中,我读到 Node 的事件循环方法主要用于 I/O 密集型任务。像从硬盘读取或使用网络。但不适用于 CPU 密集型任务。

引用陈述的具体原因是什么?

或者反过来问:

如果你用 CPU 密集型任务占用 Node.js 会发生什么?

标签: javascriptnode.js

解决方案


Node 使用少量线程来处理许多客户端。在 Node 中,有两种类型的线程:一种是 Event Loop(又名主循环、主线程、事件线程等),另一种是 Worker Pool 中的 k 个 Worker 池(又名线程池)。

如果一个线程执行回调(Event Loop)或任务(Worker)需要很长时间,我们称之为“阻塞”。当一个线程被阻止代表一个客户端工作时,它不能处理来自任何其他客户端的请求。

您可以在官方 nodejs 指南中阅读更多相关信息


推荐阅读