我一直在阅读nodejs如何使用libuv来执行异步I / O.阅读更多关于它的信息让我感觉它几乎与select(2)和epoll类似。
所以,我的问题是,如果我使用libuv(通过节点)是内部我使用select(2)或epoll。
libuv是unix中的select(2)和epoll系统调用的包装吗?
答案 0 :(得分:6)
libuv为每个平台使用最高性能的轮询机制:这意味着Linux上的epoll,macOS和BSD上的kqueue,SunOS上的/ dev / poll等。一个有趣的技巧libuv做的是它在线程上使用select()一些fds kqueue无法处理。我在这里提供了一些细节:http://code.saghul.net/index.php/2016/05/24/libuv-internals-the-osx-select2-trick/