2016-07-25 4 views
1

В Node.js мы много говорим о цикле событий, поэтому я хочу знать, в каком цикле событий мы говорим, цикл событий Javascript или цикл событий libuv? Я полагаю, что цикл событий libuv обеспечивает абстракцию для нескольких операционных систем мультиплексирования ввода/вывода? Я прав? Если не так, пожалуйста, объясните, как это работает? Мне нужны некоторые внутренние знания, я знаю, что такое цикл событий, я просто хочу знать, как он связан?Что такое среднее по циклу событий в node.js? javascript цикл событий или цикл событий libuv?

+0

В каком контексте? Какая разница, если бы это было так или иначе? – Bergi

+0

Что вы подразумеваете под «циклом событий JavaScript»? Тот, который у нас есть в браузере? – jjm

+0

Да, это js event loop :) @jjm –

ответ

3

В настоящее время Node использует цикл событий, предоставляемый libuv, а именно его цикл событий по умолчанию: uv_default_loop(). См: An Introduction to libuv по Nikhil Marathe:

петли по умолчанию обеспечивается libuv и могут быть доступны с помощью uv_default_loop(). Вы должны использовать этот цикл, если вам нужен только один цикл .

Примечание: node.js использует цикл по умолчанию в качестве основного цикла. Если вы используете написание привязок, вы должны знать об этом.

Существует linuv схема архитектуры на Design overview странице в документации libuv API:

libuv architecture

В прошлом цикл событий libev был использован в узле. См Understanding the node.js event loop по Mikito Такадой:

Внутри node.js полагается на libev, чтобы обеспечить цикл событий, который дополняется libeio, которая использует объединенные потоки для обеспечения асинхронного ввода/вывода. Чтобы узнать еще больше, ознакомьтесь с документацией libev .

Некоторые хорошие ресурсы на цикл событий Node:

Благодаря Saúl Ибарра Corretgé для разъяснения в комментариях.

+1

Это неверно. libuv не использовал libev уже много лет. Кроме того, даже когда это было сделано, диаграмма все равно была бы неправильной, потому что теги не используются для ввода/вывода в сети, просто для операций с файловой системой и getaddrinfo. Вы можете найти правильную блок-диаграмму в официальной документации libuv: http://docs.libuv.org/en/v1.x/design.html – saghul

+0

@saghul Большое спасибо за разъяснение. Я обновил свой ответ. Если что-то еще нуждается в исправлении, сообщите мне. Благодарю. – rsp

+0

Лучше сейчас :-) Использование 'uv_default_loop' также может измениться и в будущем с введением нескольких изолятов, но в настоящий момент оно истинно. Спасибо за обновление ответа! – saghul

Смежные вопросы