为什么使用边缘触发时必须配合非阻塞IO
时间: 2023-06-13 20:08:27 浏览: 125
边缘触发(Edge-triggered)是一种事件驱动模型,它只在事件状态发生变化时才会通知应用程序,而不是像水平触发(Level-triggered)那样,只要事件状态是“就绪”的,就会不断地通知应用程序。
使用边缘触发时,需要配合非阻塞IO,原因在于阻塞IO会导致程序在IO操作时一直阻塞,从而无法及时处理边缘触发的事件通知。而非阻塞IO则可以让程序在IO操作时不会被阻塞,可以及时处理事件通知。
例如,当一个socket可读时,边缘触发会通知应用程序。如果使用阻塞IO,当应用程序在读取数据时,如果没有数据可读,应用程序会一直阻塞在读取操作处,无法及时响应边缘触发的事件通知。而如果使用非阻塞IO,应用程序可以在读取操作处立即返回,然后再根据返回值来判断是否有数据可读,从而及时响应事件通知。
阅读全文