从较为底层来讨论epoll的适应场景,在底层驱动而言,内核通过计算机网卡驱动来获取数据和发包收包。
但是网卡驱动是没有办法预知什么时候远程主机会发送数据包过来,只能通过两种方式来检测和探知:
1)轮训
2)中断
这两种方式分别是主动和被动执行,轮训是程序主动发起,进行轮流询问,而中断则是底层硬件发送中断信号,执行中断处理程序。
当数据包少或者通信不频繁的情况下,我们采用中断则效率很高,因为中断避免了无谓的询问。但是多系统通信频繁,比如千M网卡等,如果也采用中断的话,可想而知,系统的效率将很低,因为中断要进行上下文交换,执行中断处理程序,系统开销过大。