如何在nodejs使用的libev中实现ev_timer

时间:2016-06-15 03:13:49

标签: node.js settimeout libevent libev

nodejs中的

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

是否使用轮询实现?如果我将超时设置为30秒,是否有任何进程检查挂起超时的每毫秒?

1 个答案:

答案 0 :(得分:0)

libev已被libuv取代。

计时器API显示为here

基本上,在系统中的所有其他非IO活动完成后,事件循环将用于轮询。目前,它将有一个或多个待处理的I / O事件,以及一个或多个计时器事件等。轮询的输入是以这样的方式精心设计的,即超时是注册时间事件中的最小值。这与事件循环维护的相对时间字段相结合,有助于找出计时器回调被触发的正确时间。

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

希望这有帮助。