【问题标题】:Is libuv under the hood use epoll or select(2) in unixlibuv 是在 unix 中使用 epoll 还是 select(2)
【发布时间】:2016-11-02 23:05:28
【问题描述】:

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

所以,如果我使用的是 libuv(通过节点),我的问题是在内部使用 select(2) 或 epoll。

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

【问题讨论】:

标签: node.js unix epoll select2 libuv


【解决方案1】:

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 fs 中应该暴露这些 x-platform "select" 或 "poll" 方法。
  • 我看不出这会对绝大多数用户有什么帮助。
猜你喜欢
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 2018-11-07
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多