水平触发LT和边沿触发ET,阻塞和非阻塞,IO多路复用及触发模式和阻塞模式
水平触发LT和边沿触发ET 内核中有一个与socket关联的读写缓冲区。 水平触发的意思是只要缓冲区不为空就触发可读事件,只要缓冲区不满就触发可写事件。 而边缘触发的意思是当缓冲区从满到不满的时间点触发一次可写事件,当缓冲区从空到非空的时间点触发一次可读事件。 水平触发只要缓冲区不空就持续触发可读事件,只要缓冲组不满就持续触发可写事件。 而边缘触发只在缓冲区从满到不满的时间点触发一次可写事件,后续不会再次触发可写事件,只在缓冲区从空到不空的时间点触发一次可读事件,后续不会再次触发可读事件。 所谓的边缘就是状态发生改变的点,从空到不空(可读),从满到不满(可写)。只在状态发生改变的时候触发一次的触发方式叫边缘触发,只要可读或者可写,就持续发送可读或者可写事件的触发模式叫水平触发。 水平触发可读, 水平触发可写, 边沿触发可读, 边沿触发可写, 阻塞模式和非阻塞 socket分为监听socket和连接socket。 阻塞和非阻塞主要是针对连接socket的读写来说的。即阻塞读写还是非阻塞读写。 监听socket阻塞和非阻塞效果都一样,水平触发和边缘触发效果也一样,数据固定,一次读取完毕。 连接socket如果是阻塞的模式,无数据可读或者无空间可写的情况下,都会阻塞当前的连接socket。 连接socket如果是非阻塞模式的,无论有没有数据可读,也无论有没有空间可写