MST

星途 面试题库

面试题:网络编程之epoll基础

在基于epoll的网络编程中,epoll有两种工作模式,分别是什么?请简要描述它们的区别以及适用场景。
34.4万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试
  • 两种工作模式
    • LT(Level Triggered)水平触发:只要文件描述符对应的缓冲区还有未读数据(对于读操作)或者还有可写空间(对于写操作),epoll就会不断通知应用程序。应用程序可以在一次通知中读取或写入部分数据,下次epoll仍然会通知,直到缓冲区数据处理完。
    • ET(Edge Triggered)边缘触发:只有当文件描述符状态发生变化(从不可读变为可读,从不可写变为可写)时,epoll才会通知应用程序。应用程序必须在一次通知中尽可能多地读取或写入数据,因为如果没有全部处理完,下次epoll不会再通知,直到下一次状态变化。
  • 区别
    • LT模式较为保守,只要条件满足就会持续通知,相对容易编程,不易丢失事件;ET模式更加高效,仅在状态变化时通知,减少不必要的通知,但编程复杂度较高,需要一次性尽可能处理完数据,否则可能遗漏数据。
  • 适用场景
    • LT模式:适用于对性能要求不是特别高,但是希望编程简单,对事件处理的及时性要求不是极其严格的场景。
    • ET模式:适用于高并发、性能要求极高的场景,如大型网络服务器,它能减少epoll通知的频率,提高系统的整体性能,但需要开发者更精细地处理数据读写逻辑。