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

Node.js 单CPU机器上基于事件循环的应用程序,node.js,event-handling,vert.x,single-threaded,Node.js,Event Handling,Vert.x,Single Threaded,据我所知,基于事件循环的应用程序有一个始终运行的线程。我很想了解这些在单CPU机器上的行为 编辑:这不是专门针对node.js应用程序的。我见过用Java编写的实现事件循环的应用程序有一个线程在无限循环中运行。这是不正确的。类似node.js中基于事件的线程只有在实际有一些事件需要服务并且有一些事件处理程序需要为该事件运行时才会运行。大多数情况下,线程处于空闲状态,只是等待下一个事件触发它再次运行,并且在空闲时不使用CPU周期。因此,它使用的CPU不超过代码实际执行的时间 根据系统的不同,也可能

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


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

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

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


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

Ok。在分析vert.x应用程序时,我看到事件处理程序线程始终在运行,即使没有可供服务的事件。在Java中,我的理解是所有事件处理程序线程都将在无限循环中运行。这就是我问题的基础。@Manish-有不同的方法来编码事件循环,但是像node.js这样的服务器进程在等待事件时使用零CPU。主线程实际上已经进入睡眠状态,等待被下一个事件唤醒。