網絡I/O | 不輟集

網絡I/O

區分幾個概念:

  • 同步(synchronous)和異步(asynchronous)是消息通知的機制,是從消息發送方的角度看;
  • 阻塞(blocking)和非阻塞(non-blocking)是線程等待通知的過程,是從接收方的角度看。
    多路復用是指單一線程監聽多個文件描述符(file descriptor)。
  • 邊緣觸發(edge-trigger)和水平觸發(level-trigger)是當文件描述符關聯的內核緩衝區變化時通知應用程序的兩種方式。邊緣觸發是當狀態變化時通知,水平觸發是只要滿足條件就一直通知。
    epoll 默認是使用水平觸發,但提供邊緣觸發模式。
    所謂水平觸發,就是只要達到某個限定的水平就一直通知;而邊緣觸發是處在上升沿或下降沿的時候觸發。