epoll的两种模式LT和ET
二者的差异在于level-trigger模式下只要某个socket处于readable/writable状态,无论什么时候进行epoll_wait都会返回该socket;而edge-trigger模式下只有某个socket从unreadable变为readable或从unwritable变为writable时,epoll_wait才会返回该socket。
上面这句话ET模式说的不对。
实际上,对于LT模式,确实只要某个socket处于readable/writable状态,无论什么时候进行epoll_wait都会返回该socket。
但是对于ET模式,当某个socket从unreadable变为readable或从unwritable变为writable时,epoll_wait会返回该socket。除此之外,socket状态不改变时,比如在readable状态时,若又有网络事件(收到数据包)了,epoll_wait也会返回该socket。此时系统socket缓冲区的数据为,上次没有处理的数据和这次新收到的数据。
本文详细解析了epoll的两种模式:level-triggered (LT) 和 edge-triggered (ET) 的工作原理及差异。LT模式下,只要socket处于可读写状态,epoll_wait总会返回。而在ET模式中,除了状态变化外,即使socket已处于可读状态且有新的网络事件发生时,epoll_wait也会返回。这对于高效网络编程尤为重要。
1281

被折叠的 条评论
为什么被折叠?



