我一直在阅读 nodejs 如何使用 libuv 来执行异步 I/O。阅读更多关于它的内容让我觉得它听起来几乎与 select(2) 和 epoll 相似。

所以,我的问题是,如果我使用 libuv(via node),我在内部使用 select(2) 或 epoll 是否正确。

libuv 是 unix 中 select(2) 和 epoll 系统调用的包装器吗?

最佳答案

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/

关于node.js - libuv 是在 unix 中使用 epoll 还是 select(2),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38130102/

10-10 14:53