setTimeout的工作原理

setTimeout的工作原理,time,timeout,cpu-architecture,Time,Timeout,Cpu Architecture,Javascript中的setTimeout如何在低级别工作?有硬件闹钟吗?或者解释器(通过系统)只是定期询问现在几点?指定的只是语言级别的效果。没有要求它在低级别上以特定的方式工作。在创建Javascript解释器之前,这样做需要对所选语言中必须存在的函数采取一些侵入性策略 一般来说,大多数操作系统都有一个系统计时器,每秒滴答X次,解释器要么设置一个计时器来触发事件,要么在多次滴答之后发送信号,要么运行一个单独的线程,直到处理超时为止。此时,解释器将进行设置,以便下一步运行事件处理程序。但是您

Javascript中的setTimeout如何在低级别工作?有硬件闹钟吗?或者解释器(通过系统)只是定期询问现在几点?

指定的只是语言级别的效果。没有要求它在低级别上以特定的方式工作。在创建Javascript解释器之前,这样做需要对所选语言中必须存在的函数采取一些侵入性策略


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

好的,但是计时器在操作系统中是如何工作的呢?操作系统如何知道何时进行下一次计时?操作系统如何知道何时触发事件?我的问题是一般性的,实际上与特定语言无关。我认为,问题更多的是CPU架构。大多数机器都有一种每秒中断CPU X次的机制。操作系统设置响应这些中断并增加计数器,通常会检查是否有进程/线程在等待计数器达到给定值(如果有,启动/恢复计数器)。为了使这更有意义,您需要了解硬件中断。