【问题标题】:Event loop based applications on single CPU machines单 CPU 机器上基于事件循环的应用程序
【发布时间】:2015-08-23 14:01:18
【问题描述】:

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

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

【问题讨论】:

    标签: node.js event-handling vert.x single-threaded


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的。在分析 vert.x 应用程序时,我看到事件处理程序线程始终在运行,即使没有要服务的事件也是如此。在 Java 中,我的理解是所有事件处理线程都会在无限循环中运行。这是我提出问题的基础。
    • @Manish - 编写事件循环有不同的方法,但像 node.js 这样的服务器进程在等待事件时使用零 CPU。主线程基本上已经进入睡眠状态,等待被下一个事件唤醒。
    猜你喜欢
    • 2014-09-21
    • 2014-01-23
    • 2013-07-07
    • 2012-07-03
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多