0

nodejs中的setTimeout是用c语言库libev ev_timer实现的。ev_timer 是如何工作的?

它是使用轮询实现的吗?如果我将超时设置为 30 秒,是否有任何进程每毫秒检查一次等待超时?

4

1 回答 1

0

libev 已被 libuv 取代。

计时器 API在此处说明

基本上,在系统中的所有其他非 IO 活动完成后,事件循环会进行轮询。目前,它将有一个或多个 I/O 事件未决,以及一个或多个计时器事件等。投票的输入是这样设计的,它的超时是注册时间事件中最少的。这与事件循环维护的相对时间字段相结合,有助于确定触发计时器回调的正确时间。

简而言之,等待的时间是通过轮询调用委托给操作系统的,而不是通过定期唤醒和重新检查。

希望这可以帮助。

于 2016-06-15T06:23:07.823 回答