据我所知,基于事件循环的应用程序有一个始终在运行的线程。我很想知道它们在单个CPU机器上的行为。
编辑:这不是专门针对node.js应用程序的。我见过用Java编写的实现事件循环的应用程序有一个在无限循环中运行的线程。
答案 0 :(得分:2)
这不正确。类似于node.js的基于事件的线程仅在实际存在要服务的事件和为该事件运行的某个事件处理程序时运行。大多数情况下,线程处于空闲状态,只是等待下一个事件触发它再次运行,而不是在空闲时使用CPU周期。因此,它使用的CPU不会超过代码实际执行的时间。
根据系统的不同,可能还会有一些内务处理任务偶尔使用一些CPU(如垃圾收集),但这些也会完成工作,然后再次闲置。
此外,与讨论相关的是node.js在单个线程中运行所有Javascript,但它也可能使用其他线程来实现各种库函数(例如文件I / O)。实际上,它有一个内部线程池,供库的各个部分使用。