程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> (原創)撥開迷霧見月明-剖析asio中的proactor模式(一),asioproactor

(原創)撥開迷霧見月明-剖析asio中的proactor模式(一),asioproactor

編輯:C++入門知識

(原創)撥開迷霧見月明-剖析asio中的proactor模式(一),asioproactor


  使用asio之前要先對它的設計思想有所了解,了解設計思想將有助於我們理解和應用asio。asio是基於proactor模式的,asio的proactor模式隱藏於大量的細節當中,要找到它的蹤跡,往往有種只見樹木不見森林之感,筆者將剖析asio中的proactor模式,一步一步揭開它的面紗,最終撥開雲霧,將一個完整的proactor模式還原出來。在剖析asio的proactor模式之前,我們先來看看常見的io設計模式。proactor(主動器)模式是一種重要的I/O設計模式,用來解決高並發網絡中遇到的問題,另外還有一種模式是reactor(反應器),libevent是基於reactor實現的,讓我們先看看這兩種模式的一些特點。

反應器和主動器模式介紹

  反應器需要應用程序先注冊事件處理器,然後啟動反應器的事件循環,不斷的檢查是否有就緒I/O事件,當有就緒事件時,同步事件多路分解器將會返回到反應器,反應器會將事件分發給多個句柄的回調函數以處理這些事件。【1】

反應器的一個特點是,具體的處理程序並不調用反應器,而是由反應器來通知處理程序去處理事件。這種方式也被稱為“控制反轉”,又稱為“好萊塢原則”。下面是反應器模式的類圖:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved