select
всегда доставляет дескрипторы ядру при вызове select()
.
Но epoll
доставляет дескриптор один раз при вызове epoll_ctl()
и получает события, вызывая epoll_wait()
.
И цикл от 0 до max_descriptor для проверки событий при использовании select
.
Но цикл для событий произошел дескрипторы для проверки событий при использовании epoll
.
Это влияет на производительность.
И select
имеет ограничение на максимальное количество дескрипторов, поскольку он использует битовый массив.
Но у epoll
нет ограничения, потому что он использует структурный массив.
И select
существует в большинстве платформ (Windows, Linux, Unix, BSD)
Но epoll
существует только в Linux.
Конечно, существуют замены epoll
на других платформах (IOCP в Windows, kqueue в BSD и т. Д.)