首先我们假定 IO多路复用的select系统调用和 具体的IO操作都在同一个线程内执行。
当使用边缘触发+阻塞Io的情况下: 假设t1 时刻数据到来, 文件描述符就绪 被select返回,然后执行io操作,
io操作通过while的方式执行, 最终没有更多的IO可以执行的时候 IO调用将会被阻塞。从而导致无法继续执行select 检查后续发生的就绪事件。
好像是基于以上的原因,边缘触发都会使用非阻塞IO。
我的疑问: 边缘触发+阻塞IO中存在的尴尬问题,在水平触发模式+阻塞Io中就不存在吗?
水平触发+阻塞IO: 当数据到来的时候假设有100字节数据可读,此时select返回就绪可读文件描述符, 然后通过while读取,当没有更多可读取的数据的时候,io调用不是也会阻塞吗? 所以也会导致无法继续执行select检查后续发生的就绪事件。