2016-06-15 3 views
0

setTimeout в nodejs реализуется с помощью c языковой библиотеки libev ev_timer. Как работает ev_timer?Как реализуется ev_timer в libev, используемом nodejs

Выполняется ли с использованием опроса? Если я установил тайм-аут в 30 секунд, проверяет ли какой-либо процесс каждые миллисекунды для ожидающих тайм-аутов?

ответ

0

libev был заменен на libuv.

API-интерфейс таймер проиллюстрирована here

В основном цикл событий идет для опроса после того, как все другие виды деятельности, не IO в системе завершены. На данный момент ожидается одно или несколько событий ввода-вывода и один или несколько событий таймера. Вход в опрос создается таким образом, что это таймаут является наименьшим среди зарегистрированных событий времени. Это, в сочетании с относительным полем времени, которое поддерживает цикл событий, помогает определить правильное время для обратного вызова таймера.

Короче говоря, время ожидания делегируется ОС через вызов опроса, а не через регулярное пробуждение и повторную проверку.

Надеюсь, это поможет.