Alternative I/O models

What’s epoll? - Julia Evans

What’s O_NONBLOCK ? - Blocking I/O, Nonblocking I/O, And Epoll

  • select / poll / epoll: practical difference for system architects
    • No new code should be using select()
    • In the vast majority of cases you would be choosing between poll and epoll/libevent.
    • To use epoll, much more preparation is needed.
    • select carries quite a few design flaws which make it undesirable as a polling mechanism in the modern networking application… is there is any reason to use select at all?
      • The first reason is portability.
      • select can - theoretically - handle the timeouts withing the one nanosecond precision, while both poll and epoll can only handle the one millisecond precision.
  • Using select(2) - Use libev, Boost.Asio or other libraries.
    • libev - A full-featured and high-performance event loop that is loosely modelled after libevent.
Written on March 26, 2021, Last update on March 3, 2023
linux io-stream file socket event network