IOCP模型與EPOLL模型的比較

2022-03-05 20:06:40 字數 1697 閱讀 7164

一:iocp和epoll之間的異同。

異:1:iocp是windows系統下使用。epoll是linux系統下使用。

2:iocp是io操作完畢之後,通過get函式獲得乙個完成的事件通知。

epoll是當你希望進行乙個io操作時,向epoll查詢是否可讀或者可寫,若處於可讀或可寫狀態後,epoll會通過epoll_wait進行通知。

3:iocp封裝了非同步的訊息事件的通知機制,同時封裝了部分io操作。但epoll僅僅封裝了乙個非同步事件的通知機制,並不負責io讀寫操作。epoll保持了事件通知和io操作間的獨立性,更加簡單靈活。

4: 基於上面的描述,我們可以知道epoll不負責io操作,所以它只告訴你當前可讀可寫了,並且將協議讀寫緩衝填充,由使用者去讀寫控制,此時我們可以做出額 外的許多操作。iocp則直接將io通道裡的讀寫操作都做完了才通知使用者,當io通道裡發生了堵塞等狀況我們是無法控制的。

三:網路遊戲伺服器注意事項,優化措施

1:io操作是最大的效能消耗點,注意優化餘地很大。

2:演算法資料結構。排序尋路演算法的優化。list,vector,hashmap的選擇。大資料定址,不要考慮遍歷,注意考慮hash.

3:記憶體管理。過載new/delete,記憶體池,物件池的處理。

4:資料的提前準備和即時計算。

5:cpu方面的統計監視。邏輯幀計數(應當50ms以內)。

6:預分配池減少切換和排程,預處理的執行緒池和連線池等。

7:基與訊息佇列的統計和資訊監視框架。

8:cpu消耗排名:第一aoi同步,第二網路發包i/o操作,第三技能/buff判定計算處理,第四定時器的頻率。

9:記憶體洩露檢測,記憶體訪問越界警惕,記憶體碎片的**。

10:記憶體消耗排名:第一玩家物件包括其物品,第二網路資料緩衝。

11:注意32位和64位的記憶體容錯。

12:減少不必要的分包傳送。

13:減少重複包和重拷貝包的代價。

14:建議分緊急包(立刻傳送)和非緊急包(定時輪訓傳送)。

15:頻寬消耗排名:第一移動位置同步,第二物件載入,第三登陸突發包,第四狀態機定時器訊息。

16:客戶端可做部分預判斷機制,部分操作盡量分包傳送。

17:大量玩家聚集時,部分非緊急包進行丟棄。

18:注意資料庫單錶內key數量。

19:活躍使用者和非活躍使用者的分割訪問處理。

20:控制玩家操作對資料庫的操作頻率。

21:注意使用共享記憶體等方式對資料進行安全備份儲存。

22:注意安全策略,對內網進行ip檢查,對日誌進行記錄,任意兩環點內均使用加密演算法會更佳。

23:實時注意對閘道器,資料庫等介面進行監察控制。

24:定時器應當儲存乙個佇列,而非單向定位。

25:九宮格資料同步時,不需要直接進行九宮格的同步,對角色加乙個aoi,基於圓方碰撞原理,拋棄不必要的格資訊,可大幅節省。

26:客戶端做部分的**機制,伺服器檢測時注意時間戳問題。

27:定期心跳包,檢查死鏈結是必要的。

28:為了實現更加負責多種類的ai,ai尋路獨立伺服器設計已經是必須的了。其次需要考慮的是聊天,同步。

29:伺服器內網間可以考慮使用udp。

30:注意所有記憶體池,物件池等的動態擴張分配。

1:以記憶體換取cpu的理念。

2:npc不死理念。(只會disable)

3:動態擴充套件理念,負載均衡理念。

4:客戶端不可信理念。

5:指標資料,訊息均不可信理念。

IOCP模型和EPOLL模型的比較

iocp模型與epoll模型的比較 iocp i o completion port 常稱i o完成埠。iocp模型屬於一種通訊模型,適用於 能控制併發執行的 高負載伺服器的乙個技術。通俗一點說,就是用於高效處理很多很多的客戶端進行資料交換的乙個模型。或者可以說,就是能非同步i o操作的模型。三 網...

IOCP模型與網路程式設計

一。前言 在老師分配任務 嘗試利用iocp模型寫出服務端和客戶端的 給我時,腦子一片空白,並不知道什麼是iocp模型,會不會是像軟體設計模式裡面的工廠模式,裝飾模式之類的那些呢?嘿嘿,不過好像是乙個挺好玩的東西,挺好奇是什麼東西來的,又是乙個新知識啦 於是,開始去尋找一大堆的資料,為這個了解做準備,...

IOCP模型總結

呼叫的步驟如下 抽象出乙個完成埠大概的處理流程 1 建立乙個完成埠。2 建立乙個執行緒a。3 a執行緒迴圈呼叫getqueuedcompletionstatus 函式來得到io操作結果,這個函式是個阻塞函式。4 主線程迴圈裡呼叫accept等待客戶端連線上來。5 主線程裡accept返回新連線建立以...