C 網路程式設計 ACE相關資料收集

2021-06-10 14:23:34 字數 1997 閱讀 7695

小飛驢的**  馬維達 c++網路程式設計 卷二 譯者

cgi-bin/lb5000mx/leoboard.cgi

loveunix技術論壇 

hxh(賀星河)的專欄  ace網路程式設計

ace自適配通訊環境討論 

[ace技術**集]一.ace自適配通訊環境:用於開發通訊軟體的物件導向網路程式設計工具包

ace程式入口函式替換機制分析

[ace技術**集]三 ipc sap:用於高效、可移植和靈活的網路程式設計的c++包裝

[ace技術**集]四 ace輕量級os併發機制的oo封裝

[ace技術**集]五 c/c++執行緒專有儲存:用於訪問「per-thread」狀態的物件行為模式

ace的類結構圖[pdf文件]

網路通訊

ace參考**:'>'>'>s.wustl.edu/~schmidt/ace.html

設計用於簡化編寫分布式程式的庫。嘗試著使得編寫處理非同步行為的程式更容易,而不是用同步的外殼包起非同步的本質。

******socket

參考**:

這個類庫讓編寫基於socket的客戶/伺服器程式更加容易。

a stream socket api for c++

參考**:'>~dgame/sockets/socketsc++/sockets.html

又乙個對socket的封裝庫。

ace將網路程式設計進行了模式化,以便你不必每次都重複相同的**。

網路程式設計需要處理的事情多括中斷,併發,多執行緒等,程式格式相對固定,但是健壯的網路程式則相對複雜。為了處理這些情形,ace內建了幾個網路程式設計的模式。

最基本的模式當然是直接使用sock進行單客戶單伺服器單執行緒的一對一模型,這種模式相對簡單,也和ace關係不大,但是這樣編寫的程式不能處理併發的情況,可用性很差或者說基本不具有可用性。

最簡單的處理併發但是卻使用單執行緒的框架在ace中稱為reactor框架,在這種框架下,reactor扮演了協調員的角色,應用程式編制者需要首先寫好各種各樣的事件處理程式,然後在reactor中進行登記,reactor以阻塞的方式同時監視所有可能發生的事件,並且在相應的事件發生的時候呼叫對應的處理過程。這種框架解決了在單執行緒的前提下解決了併發,但是存在一定的問題,如果某個事件執行過程過長,則可能導致reactor漏過某些事件。

另外一種單執行緒處理併發的模式稱為非同步i/o的proactor模式,這種模式和前面介紹的reactor模式其實區別不大,唯一的區別之處在於,server類在對從網路上收到的訊息進行處理的時候,後者並不直接讓處理器處理收到的訊息,而是首先將訊息轉換為乙個訊息塊結構(ace_message_block,通過this->reader_.read函式),然後再讓相應的處理函式處理已經接收好的訊息塊結構。

比較一下reactor框架和proactor框架,前者的執行流程是: 監視事件->呼叫事件處理過程->繼續監視事件。 後者的執行流程是: 監視事件->產生訊息->處理訊息->釋放訊息->繼續監視事件。這兩種不同的框架在引入各自的多執行緒概念以後,就衍生出不同的多執行緒框架。

前面說過,使用多執行緒進行網路程式設計也有兩種框架,半同步/半非同步框架和領導者/跟隨者框架。前者對應的是proactor框架,後者對應的是reactor框架。所謂半同步或者半非同步框架,執行的流程是:主線程負責 監視事件->產生訊息->放入訊息佇列->監視事件,工作執行緒則負責從獲取訊息->處理訊息->從訊息佇列獲取另外乙個訊息。 這種框架的優勢在於,由於構造訊息並且將其放入訊息佇列的時間是可以控制的,因此,可以很好的處理網路峰值的情況,即使出現很高的峰值,也不會造成訊息的遺漏,但是由於訊息存在乙個入佇列,出佇列的過程,因此效能相較另外一種模型,理論上更差。

對於領導者/跟隨者模型中,必然存在乙個對等的執行緒池,執行緒池的數目取決於系統能夠承受的數目,單就對於模型本身來說,執行緒池的執行緒數目越大,能夠承受的網路蜂擁的極限值也越大。 但是如果執行每個請求的時間都很短,則系統中存在大量永遠也用不到的執行緒,浪費了系統的資源。

如果使用多處理器的系統,應用程式必然能夠從多執行緒(工作執行緒和跟隨者執行緒)結構中收益

使用ACE進行網路程式設計

ace將網路程式設計進行了模式化,以便你不必每次都重複相同的 網路程式設計需要處理的事情多括中斷,併發,多執行緒等,程式格式相對固定,但是健壯的網路程式則相對複雜。為了處理這些情形,ace內建了幾個網路程式設計的模式。最基本的模式當然是直接使用sock進行單客戶單伺服器單執行緒的一對一模型,這種模式...

學習 ACE 讀C 網路程式設計(卷一)

第五章 併發設計空間 1.伺服器可以分為迴圈式,並髮式,和反應式等幾大類。在這一設計空間中,需要權衡的主要在於 是要簡化程式設計,還是要提高程式的可伸縮性。2.通過使用多程序或多執行緒。並髮式伺服器的乙個常見設計是 乙個請求乙個執行緒 3.thread per connection 出色地支援 客戶...

文章索引 Socket 網路程式設計資料收集

windows socket和linux socket程式設計的區別 vc檢視某ip是否可以ping通 vc獲取本機ip位址列表 ip位址和整數轉換 區域網內mac位址衝突導致裝置網路出現異常狀況 scoket 多執行緒範例 tcp udp server client vc驛站 windows ap...