淺談服務器性能測試的全生命周期——從測試、結果分析到優化策略(24)
發表于:2016-11-28來源:騰訊作者:Micheal點擊數:
標簽:服務器
《UNIX網絡 編程 卷1:套接字聯網API》中有一幅圖比較經典。 IO模型 阻塞I/O模型:數據沒到達之前,I/O一直阻塞,如果數據到達,則會返回。典型的是recvf
《UNIX網絡編程卷1:套接字聯網API》中有一幅圖比較經典。

IO模型
阻塞I/O模型:數據沒到達之前,I/O一直阻塞,如果數據到達,則會返回。典型的是recvfrom,一般的默認都是阻塞的。
非阻塞的I/O模型:和阻塞相反,只要不能得到結果的時候,I/O立刻返回。不會阻塞當前線程。
IO復用模型:也就是自己要學習的部分。多路復用的意思是,將多路信號合并到一路上進行處理,類似多個管道匯集到一個管道,與之相反的是多路分解。
IO復用模型主要是select,poll,epoll;對一個IO端口,兩次調用,兩次返回,比阻塞IO并沒有什么優越性;關鍵是能實現同時對多個IO端口進行監聽;函數也會使進程阻塞,但是和阻塞I/O所不同的的,這兩個函數可以同時阻塞多個I/O操作。而且可以同時對多個讀操作,多個寫操作的I/O函數進行檢測,直到有數據可讀或可寫時,才真正調用I/O操作函數。