javascript - 为什么要避免使用事件循环来执行 CPU 密集型任务?
问题描述
在一篇教程中,我读到 Node 的事件循环方法主要用于 I/O 密集型任务。像从硬盘读取或使用网络。但不适用于 CPU 密集型任务。
引用陈述的具体原因是什么?
或者反过来问:
如果你用 CPU 密集型任务占用 Node.js 会发生什么?
解决方案
Node 使用少量线程来处理许多客户端。在 Node 中,有两种类型的线程:一种是 Event Loop(又名主循环、主线程、事件线程等),另一种是 Worker Pool 中的 k 个 Worker 池(又名线程池)。
如果一个线程执行回调(Event Loop)或任务(Worker)需要很长时间,我们称之为“阻塞”。当一个线程被阻止代表一个客户端工作时,它不能处理来自任何其他客户端的请求。
推荐阅读
- javascript - 我是 JavaScript 的初学者,我不明白为什么在 ESLint 部分的括号中显示错误
- mysql - 将行转换为每行具有多个值的表
- regex - RegExp 删除新行的所有起始编号
- postgresql - postgres 中准备好的语句中的条件
- sql - 当我使用相同的查询但在不同的数据库上下文中时,错误的 sql 执行计划
- shell - 如何在 shell 脚本中调用 Ansible 变量?
- pandas - 如何在 VS Code 中打开的 Jupyter Notebooks 中增加字体大小/更好地渲染 Pandas 数据框?
- javascript - TypeScript 将对象添加到具有扩展的数组
- bash - 类似于较早的问题“将标题添加到列表文本文件中的列”
- javascript - Axios:哪些 HTTP 响应状态代码导致 then() 和哪些 catch()?