io,同步,異步,阻塞,非阻塞

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

參考連接:http://www.javashuo.com/article/p-fjbuiqko-bu.html

相關文章
相關標籤/搜索