使用epoll的时候是否要将socket设置成非阻塞?
epoll有两种模式,分别是水平触发(ET模式)和边沿触发(LT)关于二者的区别,这里举一个例子,A向B一次发送了4K的数据,此时B已经调用了的epoll_wait会返回,这时假设B只读了2K的数据,还剩余2K未读。此时水平触发和边沿触发的不同点就体现出来了,再次调用epoll_wait后,边沿触发模式下不会返回,而水平触发则会返回。也就是说边沿触发只触发一次,需要程序一次读完所有数据,一般在read/recv/accept的外层需要加一个循环,直到没有数据,但是当某次循环下数据恰好读完后再调用rea
原创
2021-09-27 16:33:56 ·
761 阅读 ·
2 评论