ACE学习:
ACE官網,下載ace及ace文檔:
The ADAPTIVE Communication Environment (ACE) ?http://www.cs.wustl.edu/~schmidt/ACE.html
?
ACE Class Categories ?
http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/docs/ACE-categories.html
?
ACE-tutorial:
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 [1,?3]). 事件分享器的作用,即將那些讀寫事件源分發給各讀寫事件的處理者,就像送快遞的在樓下喊: 誰的什么東西送了, 快來拿吧。開發人員在開始的時候需要在分享器那里注冊感興趣的事件,并提供相應的處理者(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的不同);
- 當事件分離者默默等待完成事情到來的同時,操作系統已經在一邊開始干活了,它從目標讀取數據,放入用戶提供的緩存區中,最后通知事件分離者,這個事情我搞完了;
- 事件分享者通知之前的事件處理者: 你吩咐的事情搞定了;
- 事件處理者這時會發現想要讀的數據已經乖乖地放在他提供的緩存區中,想怎么處理都行了。如果有需要,事件處理者還像之前一樣發起另外一個寫操作,和上面的幾個步驟一樣。
?
轉載于:https://www.cnblogs.com/nanzhi/p/8474483.html
總結
- 上一篇: Entity Framework Rel
- 下一篇: 将js进行到底:node学习10