0

据我了解,基于事件循环的应用程序有一个始终在运行的线程。我很想了解这些在单个 CPU 机器上的行为。

编辑:这不是专门针对 node.js 应用程序。我见过用 Java 编写的实现事件循环的应用程序有一个在无限循环中运行的线程。

4

1 回答 1

2

这是不正确的。node.js 之类的基于事件的线程仅在实际存在要服务的事件和要为该事件运行的事件处理程序时运行。大多数时候,线程处于空闲状态,只是等待下一个事件触发它再次运行,并且在空闲时不使用 CPU 周期。因此,它使用的 CPU 不超过代码实际执行的时间。

根据系统的不同,可能还会有一些偶尔使用一些 CPU 的内务处理任务(如垃圾收集),但这些任务也会完成它们的工作,然后再次空闲。

此外,与讨论相关的是 node.js 在单个线程中运行所有 Javascript,但它也可能使用其他线程来实现各种库函数(例如文件 I/O)。事实上,它有一个内部线程池,供部分库使用。

于 2015-08-23T17:47:37.550 回答