2016-06-30 3 views
1

Я читал, как nodejs использует libuv для выполнения асинхронного ввода-вывода. Чтение больше об этом дает мне ощущение, что оно почти похоже на то, как выбрать (2) и epoll.Является ли libuv под капотом использовать epoll или select (2) в unix

Итак, мой вопрос, если я использую libuv (через узел), является ли он истинным внутри, я использую select (2) или epoll.

Является ли libuv оболочкой над выбором (2) и системным вызовом epoll в unix.?

+1

Вы [прочитайте основные моменты] (https://github.com/libuv/libuv#feature-highlights)? – robertklep

ответ

5

libuv использует наиболее эффективный механизм опроса для каждой платформы: это означает epoll на Linux, kqueue на macOS и BSD,/dev/poll на SunOS и т. Д. Один интересный трюк libuv - это использование select() в потоке для некоторых fds kqueue неспособен справиться. Я подробно рассказал об этом здесь: http://code.saghul.net/index.php/2016/05/24/libuv-internals-the-osx-select2-trick/

+0

Приятный блог был довольно информативным. – Noobie

+0

Хотя в узле fs должен выставлять этот метод «выбор» или «опрос» x-платформы. – ShrekOverflow

+0

Я не вижу, как это поможет подавляющему большинству пользователей. – saghul