面试题答案
一键面试- 两种模式名称:
- 水平触发(LT, Level Triggered):只要文件描述符对应的缓冲区还有未读的数据或者可以继续写入数据,就会不断地触发事件通知。
- 边缘触发(ET, Edge Triggered):只有在文件描述符状态发生变化(例如新数据到达或可写状态变化)时才会触发事件通知,且仅触发一次,不管缓冲区中是否还有数据未处理完。
- 事件通知机制主要区别:
- 水平触发:当缓冲区中有数据可读或者可写时,每次调用
epoll_wait
都会产生事件通知,直到缓冲区为空或者不可写。这意味着应用程序可以逐步处理数据,不用担心错过事件。 - 边缘触发:仅在状态发生变化时触发事件通知,若应用程序在事件触发后没有及时处理完所有数据,后续即使缓冲区还有数据,也不会再次触发事件,需要应用程序自行负责持续读取或写入,直到没有数据可读或可写,这种模式对应用程序的处理能力要求更高,但可以减少不必要的事件触发,提高效率。
- 水平触发:当缓冲区中有数据可读或者可写时,每次调用