io即讀寫html
1,同步IO(同步):有數據時,recvfrom等待數據複製好是同步IO異步
2,阻塞IO(同步):沒有數據時recvfrom也一直等待數據到來是阻塞IO函數
3,非阻塞IO(同步):recvfrom沒有數據就不等,能夠作別的事,不時檢查有沒有數據到來非阻塞IOcode
4,IO複用模型(同步):select調用數據(select的做用是有數據時能夠告訴recvfrom)但只告知有數據了,數據在哪裏還須要找一找,recefrom再調用數據就必定有數據(若是是用eopll調用,就能夠直接知道數據在哪裏)htm
5,信號驅動IO模型(同步):創建SIGIO信號處理程序,有數據時就能夠遞交SIGIO,等內核數據準備好的時候系統中斷當前程序再recvfrom調用數據blog
6,異步IO模型:進程
調用aio_read,讓內核等數據準備好,而且複製到用戶進程空間後執行事先指定好的函數。E同窗讓舍管阿姨將杯子裝滿水後通知他。整個過程E同窗均可以作別的事情(沒有recv),這纔是真正的異步IO。get
IO分兩階段:同步
1.數據準備階段 2.內核空間複製回用戶進程緩衝區階段
通常來說:阻塞IO模型、非阻塞IO模型、IO複用模型(select/poll/epoll)、信號驅動IO模型都屬於同步IO,由於階段2是阻塞的(儘管時間很短)。只有異步IO模型是符合POSIX異步IO操做含義的,無論在階段1仍是階段2均可以幹別的事。io