基於libuv的TCP設計(三)


 

基於libuvTCP設計(一)

基於libuvTCP設計(二)

 

一、第二版本的libuv_tcp已經基本可以使用。不會出錯與崩潰現象,支持幾百路客戶端同時連接。可是有一缺陷就占用CPU非常高。因為IDLE階段一直檢測有無數據需要發送,所以當服務器空閑時IDLE會空轉,占用CPU。如今對此流程進行了改進。

 

 

二、改進

1.去掉prepare,check,idle事件

2.prepare里的判斷用戶關閉tcp和發送數據由uv_async_send代替

3.重新定義客戶端數據struct與發送數據的struct

4.回收空閑handle,write_t時判斷是否多出預計,多時不回收,直接釋放。

5.Packet類改為PacketSync。同步解析數據庫包,夠一包直接觸發回調給用戶。不再使用另一線程異步解析。

 

——————————————————————————————————————————————————————————————————————

代碼已上傳到git: https://github.com/wqvbjhc/libuv_tcp

 

 

本文版權歸作者和博客園共有,來源網址:http://www.cnblogs.com/wqvbjhc/ 

歡迎各位轉載,但是未經作者本人同意,轉載文章之后必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM