在一篇教程中,我读到 Node 的事件循环方法主要用于 I/O 密集型任务。就像从硬盘读取或使用网络一样。但不适用于CPU 密集型任务。
上述言论的具体原因是什么?
或者反过来问:
如果您占用 Node.js 来执行 CPU 密集型任务,会发生什么情况?
最佳答案
Node 使用少量线程来处理许多客户端。 Node 中有两种类型的线程:一种是事件循环(又称为主循环、主线程、事件线程等),另一种是工作池中的 k 个工作线程池(又称为线程池)。
如果线程花费很长时间来执行回调(事件循环)或任务(工作线程),我们将其称为“阻塞”。当代表一个客户端工作的线程被阻止时,它无法处理来自任何其他客户端的请求。
您可以在official nodejs guide中阅读更多相关信息。
关于javascript - 为什么应该避免使用事件循环执行 CPU 密集型任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55701468/