epoll VS select
我读了几本网络方面的书来了解epoll和select之间的区别,但它们只是稍微介绍了这个概念。如果你们能提供我在细节上的主要区别,我将不胜感激epoll VS select,select,epoll,Select,Epoll,我读了几本网络方面的书来了解epoll和select之间的区别,但它们只是稍微介绍了这个概念。如果你们能提供我在细节上的主要区别,我将不胜感激 提前感谢选择是执行异步IO的标准Unix工具。它的编程接口很古怪,在大多数Unix中的实现充其量也很平庸。它还限制了进程可以查看的描述符的最大数量,这在应用程序中很不方便。关于效率,select的性能通常随着描述符的数量线性下降 就编程接口和效率而言,epoll是对select的巨大改进,但仅在从2.6版开始的Linux中提供。其他unix也有专门的调用
提前感谢选择是执行异步IO的标准Unix工具。它的编程接口很古怪,在大多数Unix中的实现充其量也很平庸。它还限制了进程可以查看的描述符的最大数量,这在应用程序中很不方便。关于效率,
select
的性能通常随着描述符的数量线性下降
就编程接口和效率而言,
epoll
是对select
的巨大改进,但仅在从2.6版开始的Linux中提供。其他unix也有专门的调用。select
调用select()时始终将描述符传递到内核。
但是
epoll
在调用epoll\u ctl()
时传递一次描述符,并通过调用epoll\u wait()
获取事件
使用选择时,将0循环到max_描述符以检查事件
但使用epoll
时,用于检查事件的事件发生循环描述符
这些使性能有所不同
而select
由于使用位数组,所以描述符的最大数量受到限制。
但是,epoll
没有限制,因为它使用结构数组
而select
存在于大多数平台(windows、linux、unix、bsd)
但是,epoll
只存在于linux中。
当然,在其他平台(windows中的IOCP、bsd中的kqueue等)中也存在对epoll的替换