一、第二版本的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/
歡迎各位轉載,但是未經作者本人同意,轉載文章之后必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。