事件库(libevent/libuv/..)和异步I/O(libaio,liburing)之间的本质区别是什么



对于高性能I/O,通常使用一些技术:

  • poll/select/epoll/kqueue:它们是支持I/O多路复用的相同类型的系统调用
  • libevent/libev/libuv:它们是跨平台的。我认为它们封装了上述系统调用,并最终实现了事件驱动
  • libaio/libeio/liburing:它们提供对异步IO的支持

似乎所有这些都可以实现高性能,而且在易用性和跨平台方面,libevent/libev/libuv可能比poll/select/epoll/kqueue更好。但libevent/libev/libuv和libaio/libeio/liburing似乎都很出色,而且可以互换。

事件库和异步I/O之间的本质区别是什么?在什么情况下使用哪一个更好?

谢谢。

检查我的另一个答案:多线程进程中的io_uring

io_uring是唯一一个可以在没有线程池的情况下实现真正异步io的人。

相关内容

  • 没有找到相关文章

最新更新