reactor與proactor的理解

結合asio和libevent,對reactor和proactor的理解。
1.boost.asio模型的理解
  • asio是一個異步模型的網絡庫,固然也支持同步模型。
  • 在TCP異步模型編程中,重要的組件有Acceptor和Socket,固然還有最重要的io_service。
    • 能夠先將io_service理解爲一個黑盒子,它可以幫咱們作不少事情。
    • Acceptor和Socket依賴io_service,輔助作一些事情。
    • Acceptor可以接收一個鏈接,該鏈接由一個新的Socket表明
    • Socket可以接收和發送數據
  • Acceptor和Socket是異步
    • Acceptor的鏈接功能,它只是告訴io_service,鏈接來了就調用下我註冊的回調函數就ok了。
    • Socket的接收和發送功能,它也只是告訴io_servcie,發送(接收)萬數據,你告訴下個人註冊的回調函數就ok了。
  • 看圖說話
    • Acceptor在1的時候將socket和accept_handle註冊到io_service,當有鏈接的時候調用acceptr_handle
    • Socket發送(接收)數據,經過2註冊回調函數,完成發送(接收)數據會調用回調函數
2.reactor和proactor模型
個人理解:
  • 定義
    • 服務器網絡模型,用於提供高性能
    • 使用了I/O多路複用技術,監測註冊事件,當事件發生,通知感興趣事件者的模型
  • 相同點
    • 都使用了I/O多路複用技術
    • 都包含事件分離器和事件處理器
    • 事件分離器,兩個用途,1.檢測「事件處理器」關注的事件。2.事件發生時,發送事件到正確的「事件處理器」。
    • 事件處理器,通常指業務部分
  • 不一樣點
    • reactor使用同步I/O,proactor使用異步I/O
    • reactor關注事件就緒,proactor關注事件完成
  • asio
    • io_service就是「事件分離器」(想一想io_service須要調用run)
    • Acceptor和Socket都是事件的關注者,也就是「事件處理器」
  • 如何方便理解
    • 本質上就兩個東西,分離器和處理器
    • 處理器要麼想讀數據,要麼想寫數據
    • 而後分離器能夠幫助處理器來作這個事情
    • 如何作的好,就是用來不一樣的模型
    • 以上
相關文章
相關標籤/搜索