IO多路複用是指內核一旦發現進程指定的一個或者多個IO條件準備讀取,它就通知該進程。 多路複用最高效的是:它能同時等待多個文件描述符,而這些文件描述符(套接字描述符)其中的任意一個進入讀就緒狀態, select()函數就能夠返回。
IO多路複用適用以下場合:
(1)當客戶端須要同時處理多個文件描述符的輸入輸出操做時(通常是交互式輸入和網絡套接口),必須使用I/O複用。
(2)當程序須要同時進行多個套接字的操做的時候。
(3)若是一個TCP服務器既要處理監聽套接口,又要處理已鏈接套接口,通常也要用到I/O複用。
(4)若是一個服務器須要同時使用TCP和UDP協議。
(5)若是一個服務器要處理多個服務或者多個協議的時候。
與多進程和多線程技術相比,I/O多路複用技術的最大優點是系統開銷小,系統沒必要建立進程/線程,也沒必要維護這些進程/線程,從而大大減少了系統的開銷。