单个 CPU 机器上基于事件循环的应用程序

Event loop based applications on single CPU machines

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

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

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

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

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