ACE學習:

ACE官網,下載ace及ace文檔:html

The ADAPTIVE Communication Environment (ACE)  http://www.cs.wustl.edu/~schmidt/ACE.htmlreact

 

ACE Class Categories  linux

http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/docs/ACE-categories.htmlgit

 

ACE-tutorial:github

www.cs.wustl.edu/~schmidt/PDF/ACE-tutorial.pdf  http://www.cs.wustl.edu/~schmidt/PDF/ACE-tutorial.pdf編程

 

An Architectural Overview of the ACE Framework:設計模式

login.dvi  http://www.cs.wustl.edu/~schmidt/PDF/login.pdf緩存

 

 

 

參考:服務器

ACE的框架及其核心 - 螞蟻跳樓 - 博客園  https://www.cnblogs.com/xianqingzh/archive/2011/11/29/2267400.html網絡

ace 反應式服務器例子 - CSDN博客  http://blog.csdn.net/dai_jing/article/details/22388389

關於ACE_Svc_Handler   一個例子 - CSDN博客  http://blog.csdn.net/fcryuuhou/article/details/8814102

 [0]ACE環境搭建_雪泥泓爪_新浪博客  http://blog.sina.com.cn/s/blog_cf4ddb250102wn3t.html

 

 

兩種高性能I/O設計模式(Reactor/Proactor)的比較  http://www.360doc.com/content/14/0122/20/3735408_347185935.shtml

ACE網絡開發中,各類Reactor實現的總結  http://www.360doc.com/content/13/0825/23/8373418_309888394.shtml

ACE_Svc_Handler 通訊原理 - 陳波的日誌 - 網易博客  http://blog.163.com/cp7618%40yeah/blog/static/702347772011116112316677/

 

開源C/C++網絡庫比較  http://www.360doc.com/content/13/0509/11/9200790_284094456.shtml

有效使用反應堆Reactor的設計準則 - CSDN博客  http://blog.csdn.net/gunwithrose/article/details/1683374

ACE 的Reactor/Proactor框架下高併發、大容量吞吐介紹 - CSDN博客  http://blog.csdn.net/zzhongcy/article/details/41380067

ACE筆記(3)-用 ACE_Reactor 實現SOCKET事件處理 - CSDN博客  http://blog.csdn.net/AnyJack/article/details/344631

用ACE的Reactor模式實現網絡通信的例子 - CSDN博客  http://blog.csdn.net/iw1210/article/details/36204429

採用C++的ACE庫實現的一個通用的C/S架構通訊程序(最終版) - 晴天的專欄 - CSDN博客  http://blog.csdn.net/rain_qingtian/article/details/22862919

 

 

ACE編程小結 - CSDN博客  http://blog.csdn.net/mjp_mjp/article/details/4406059

ACE的SOCKET通訊例子:handle_input 函數的返回值不能隨便寫! - CSDN博客  http://blog.csdn.net/iw1210/article/details/45168145

ACE前攝器Proactor模式 - 天方 - 博客園  http://www.cnblogs.com/TianFang/archive/2006/12/31/608952.html

ACE_Service_Handler類的理解和使用 - chinaclock的專欄 - CSDN博客  http://blog.csdn.net/chinaclock/article/details/49278653

 

 

udp:

採用C++的ACE庫實現的一個通用的udp通訊服務器程序 - CSDN博客  http://blog.csdn.net/itclock/article/details/1036647

很是好的例子:

udp_reactor.rar udp_reactor.cpp  http://read.pudn.com/downloads206/sourcecode/unix_linux/972540/udp_reactor.cpp__.htm

PSS/ProactorUDPClient.cpp at master · freeeyes/PSS · GitHub  https://github.com/freeeyes/PSS/blob/master/purenessscopeserver/purenessscopeserver/PurenessScopeServer/UDP/ProactorUDPClient.cpp 

 

 

ACE_Proactor UDP V2.0 - Linux,音視頻,大數據,人工智能,網絡編程,分佈式系統 - CSDN博客  https://blog.csdn.net/shixin_0125/article/details/78858890

完整一點的Reactor框架的udpserver - CSDN博客  http://blog.csdn.net/haohao_h/article/details/1377134

ACE+線程池實現一個簡單的服務器+多客戶端通訊程序 - CSDN博客  http://blog.csdn.net/j_akill/article/details/39621453

基於ACE的線程池學習與實現(三)—— 併發編程資料 - CSDN博客  http://blog.csdn.net/luson_xing/article/details/8517782

利用ace的ACE_Task等類實現線程池 - CSDN博客  http://blog.csdn.net/wallwind/article/details/7304155

 

兩種IO多路複用方案:Reactor and Proactor

通常狀況下,I/O 複用機制須要事件分享器(event demultiplexor [13]). 事件分享器的做用,即將那些讀寫事件源分發給各讀寫事件的處理者,就像送快遞的在樓下喊: 誰的什麼東西送了, 快來拿吧。開發人員在開始的時候須要在分享器那裏註冊感興趣的事件,並提供相應的處理者(event handlers),或者是回調函數; 事件分享器在適當的時候會將請求的事件分發給這些handler或者回調函數.

涉及到事件分享器的兩種模式稱爲:Reactor and Proactor [1]. Reactor模式是基於同步I/O的,而Proactor模式是和異步I/O相關的. 在Reactor模式中,事件分離者等待某個事件或者可應用或個操做的狀態發生(好比文件描述符可讀寫,或者是socket可讀寫),事件分離者就把這個事件傳給事先註冊的事件處理函數或者回調函數,由後者來作實際的讀寫操做。

而在Proactor模式中,事件處理者(或者代由事件分離者發起)直接發起一個異步讀寫操做(至關於請求),而實際的工做是由操做系統來完成的。發起時,須要提供的參數包括用於存放讀到數據的緩存區,讀的數據大小,或者用於存放外發數據的緩存區,以及這個請求完後的回調函數等信息。事件分離者得知了這個請求,它默默等待這個請求的完成,而後轉發完成事件給相應的事件處理者或者回調。舉例來講,在Windows上事件處理者投遞了一個異步IO操做(稱有overlapped的技術),事件分離者等IOCompletion事件完成[1]. 這種異步模式的典型實現是基於操做系統底層異步API的,因此咱們可稱之爲「系統級別」的或者「真正意義上」的異步,由於具體的讀寫是由操做系統代勞的。

舉另外個例子來更好地理解Reactor與Proactor兩種模式的區別。這裏咱們只關注read操做,由於write操做也是差很少的。下面是Reactor的作法:

  • 某個事件處理者宣稱它對某個socket上的讀事件很感興趣;
  • 事件分離者等着這個事件的發生;
  • 當事件發生了,事件分離器被喚醒,這負責通知先前那個事件處理者;
  • 事件處理者收到消息,因而去那個socket上讀數據了. 若是須要,它再次宣稱對這個socket上的讀事件感興趣,一直重複上面的步驟;

下面再來看看真正意義的異步模式Proactor是如何作的:

  • 事件處理者直接投遞發一個寫操做(固然,操做系統必須支持這個異步操做). 這個時候,事件處理者根本不關心讀事件,它只管發這麼個請求,它魂牽夢縈的是這個寫操做的完成事件。這個處理者很拽,發個命令就無論具體的事情了,只等着別人(系統)幫他搞定的時候給他回個話。
  • 事件分離者等着這個讀事件的完成(比較下與Reactor的不一樣);
  • 當事件分離者默默等待完成事情到來的同時,操做系統已經在一邊開始幹活了,它從目標讀取數據,放入用戶提供的緩存區中,最後通知事件分離者,這個事情我搞完了;
  • 事件分享者通知以前的事件處理者: 你吩咐的事情搞定了;
  • 事件處理者這時會發現想要讀的數據已經乖乖地放在他提供的緩存區中,想怎麼處理都行了。若是有須要,事件處理者還像以前同樣發起另一個寫操做,和上面的幾個步驟同樣。
相關文章
相關標籤/搜索