A Tiny Network Library
1.0.0
| Part Ⅰ | Part Ⅱ | Part Ⅲ | Part Ⅳ | Part Ⅴ | Part Ⅵ | Part Ⅶ |
|---|---|---|---|---|---|---|
| 項目介紹 | 項目特點 | 開發環境 | 並發模型 | 構建項目 | 運行案例 | 模塊講解 |
本項目是參考muduo 實現的基於Reactor 模型的多線程網絡庫。使用C++ 11 編寫去除muduo 對boost 的依賴,內部實現了一個小型的HTTP 服務器,可支持GET 請求和靜態資源的訪問,且附有異步日誌監控服務端情況。
項目已經實現了Channel 模塊、Poller 模塊、事件循環模塊、HTTP 模塊、定時器模塊、異步日誌模塊、內存池模塊、數據庫連接池模塊。
Ubuntu 18.04.6 LTSg++ 7.5.0vscodegitcmake 3.10.2 項目採用主從Reactor 模型,MainReactor 只負責監聽派發新連接,在MainReactor 中通過Acceptor 接收新連接並輪詢派發給SubReactor,SubReactor 負責此連接的讀寫事件。
調用TcpServer 的start 函數後,會內部創建線程池。每個線程獨立的運行一個事件循環,即SubReactor。 MainReactor 從線程池中輪詢獲取SubReactor 並派發給它新連接,處理讀寫事件的SubReactor 個數一般和CPU 核心數相等。使用主從Reactor 模型有諸多優點:
安裝Cmake
sudo apt-get update
sudo apt-get install cmake下載項目
git clone [email protected]:Shangyizhou/tiny-network.git執行腳本構建項目
cd ./tiny-network && bash build.sh這里以一個簡單的迴聲服務器作為案例, EchoServer默認監聽端口為8080 。
cd ./example
./EchoServer執行情況:
http模塊有一個小型的HTTP服務器案例,也可以執行。其默認監聽8080 :
cd ./src/http && ./HttpServer這裡的某些模塊會配置muduo 源碼講解,有些使用的是本項目的源碼,不過實現思路是一致的。
Channel模塊
Poller模塊
EventLoop模塊
Buffer模塊
定時器模塊
HTTP模塊
異步日誌模塊
內存池模塊
數據庫連接池模塊