面试题答案
一键面试区别
- LT(水平触发):只要文件描述符对应的缓冲区还有未读数据(对于读操作)或者还有可写空间(对于写操作),epoll_wait 就会不断通知应用程序。这意味着应用程序可以不一次性处理完所有数据,下次 epoll_wait 仍会通知。
- ET(边缘触发):只有当文件描述符状态发生变化(从不可读变为可读,或从不可写变为可写)时,epoll_wait 才会通知应用程序。一旦通知后,如果应用程序没有一次性处理完数据,后续 epoll_wait 不会再通知,直到文件描述符状态再次发生变化。
LT 的优缺点
- 优点:编程相对简单,因为不用担心一次读不完数据下次就不会通知的问题,应用程序可以按自己节奏处理数据。
- 缺点:效率相对较低,因为只要缓冲区有数据就会触发通知,可能导致大量不必要的通知,增加系统开销。
ET 的优缺点
- 优点:效率更高,因为只有状态变化时才通知,减少了不必要的通知次数,适合处理高并发场景,能有效减少系统开销。
- 缺点:编程难度较大,应用程序必须在接收到通知时尽可能一次性处理完数据,否则可能丢失后续数据,需要更复杂的状态管理和数据处理逻辑。