【问题标题】:How setTimeout workssetTimeout 的工作原理
【发布时间】:2010-10-27 10:00:54
【问题描述】:

Javascript 中的 setTimeout 如何在底层工作?是否存在一些硬件闹钟?或者解释器(通过系统)只是定期询问现在几点?

【问题讨论】:

    标签: time timeout cpu-architecture


    【解决方案1】:

    指定的只是语言级别的效果。没有要求它在低级别以特定方式工作。这样做需要对您选择的语言中必须存在哪些函数进行一些侵入性策略,然后才能创建 Javascript 解释器。

    一般来说,大多数操作系统都有一个系统计时器,它每秒滴答 X 次,解释器要么设置一个计时器来触发事件或在这么多滴答之后发送信号,要么运行一个单独的线程,直到它休眠处理超时的时间。那时,解释器将进行设置,以便下一个运行事件处理程序。但是你不应该依赖任何特定的行为,因为它是一个实现细节(如果你没有在你开发的浏览器中运行你的代码,可能会失败)。

    【讨论】:

    • 好的,但是定时器在操作系统中是如何工作的?操作系统如何知道何时进行下一个计时器滴答?操作系统如何知道何时触发事件?我的问题很笼统,实际上与特定语言无关。我认为这个问题更多是关于 CPU 架构的。
    • 大多数机器都有每秒中断 CPU X 次的机制。操作系统设置了一些东西来响应这些中断并增加一个计数器,并且通常会检查是否有任何进程/线程正在等待计数器达到给定值(如果是,则启动/恢复它)。为了使这更有意义,您需要了解硬件中断。
    猜你喜欢
    • 1970-01-01
    • 2019-01-24
    • 2021-03-20
    • 2011-10-26
    • 2017-12-02
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多