BIO、NIO、AIO三者的比較


消息時的系統通信,通常基於網絡協議實現。常見的協議包括TCP/IP,UDP/IP。

TCP/IP等協議用於數據傳輸,但要完成通信,還需要對數據進行處理。例如讀取和寫入數據。

I/O可以分為兩種:同步IO和異步IO,同步I/O最常見的是 BIO(Blocking IO)、NIO(Non-Blocking IO)

BIO:是當發起I/O的讀或寫操作時,均為阻塞方式,直到應用程序讀到了流或者將流寫入數據。

NIO:基於事件驅動思想,常采用reactor(反應器)模式。當發起 IO請求時,應用程序是非阻塞的。當SOCKET有流可讀或寫的時候,

由操作系統通知應用程序,應用程序再將流讀取到緩沖區或者寫入系統。

AIO:同樣基於事件驅動的思想,通常采用Proactor(前攝器模式)實現。在進行I/O操作時,直接調用API的read或write,這兩種方法

均為異步。對於讀操作,操作系統將數據讀到緩沖區,並通知應用程序,對於寫操作,操作系統將write方法傳遞的流寫入並主動通知

應用程序。它節省了NIO中遍歷事件通知隊列的代價。

 

這里注意比較NIO和AIO的不同,AIO是操作系統完成IO並通知應用程序,NIO是操作系統通知應用程序,由應用程序完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM