【 專欄 】- muduo網路庫原始碼分析
muduo網路庫原始碼分析
muduo是基於Reactor模式的C++網路庫,採用Reactor + 執行緒池的方法提高併發性。內部對於事件驅動,執行緒池,定時器,io複用的設計都非常值得學習。設計技巧對C++程式碼風格有很大的幫助。相關推薦
【 專欄 】- muduo網路庫原始碼分析
muduo網路庫原始碼分析 muduo是基於Reactor模式的C++網路庫,採用Reactor + 執行緒池的方法提高併發性。內部對於事件驅動,執行緒池,定時器,io複用的設計都非常值得學習。設計技巧對C++程式碼風格有很大的幫
【 專欄 】- muduo網路庫學習
muduo網路庫學習 對於我等菜鳥來說,好好地研究一下一個網路庫的實現是很有必要的,muduo庫相比ACE等大型庫來說比較好入手,原作者也出了一本書可以結合著看。 https://github.com/JnuSimba/muduo
Muduo網路庫原始碼分析(四)EventLoopThread和EventLoopThreadPool的封裝
muduo的併發模型為one loop per thread+ threadpool。為了方便使用,muduo封裝了EventLoop和Thread為EventLoopThread,為了方便使用執行緒
Muduo網路庫原始碼分析(二) 定時器TimeQueue,Timer,TimerId
首先,我們先要明白為什麼需要設計這樣一個定時器類? 在開發Linux網路程式時,通常需要維護多個定時器,如維護客戶端心跳時間、檢查多個數據包的超時重傳等。如果採用linux的SIGALARM訊號實現,則會帶來較大的系統開銷,且不便於管理。 Muduo 的 Timer
Muduo網路庫原始碼分析(一) EventLoop事件迴圈(Poller和Channel)
從這一篇博文起,我們開始剖析Muduo網路庫的原始碼,主要結合《Linux多執行緒服務端程式設計》和網上的一些學習資料! (一)TCP網路程式設計的本質:三個半事件 1. 連線的建立,包括服務端接受(accept) 新連線和客戶端成功發起(connect) 連線。TCP 連
Muduo 網路庫原始碼分析 之 關鍵技術點總結
最近又把muduo網路庫仔細研究了一遍,收穫良多。本文將對muduo中的設計思想以及關鍵的技術細節進行總結和分析,當然由於篇幅的原因這裡更多的是對關鍵技術的簡略提及,具體細節還需要讀者自己去查詢學習資料。 muduo/base Date類 日期類的封裝,
Muduo網路庫原始碼分析(三)執行緒間使用eventfd通訊和EventLoop::runInLoop系列函式
先說第一點,執行緒(程序)間通訊有很多種方式(pipe,socketpair),為什麼這裡選擇eventfd? eventfd 是一個比 pipe 更高效的執行緒間事件通知機制,一方面它比 pipe
【 專欄 】- Java 7併發原始碼分析
Java 7併發原始碼分析 主要是對Java 7中與多執行緒編寫相關的類進行詳細介紹,包括原子類、多執行緒鎖以及常見的支援併發的集合。專欄中對各個類的定義以及實現方法進行重點講解,以求能夠更好的理解和編寫出高質量的多執行緒程式碼!
Java定時任務Timer排程器【二】 多執行緒原始碼分析(圖文版)
上一節通過一個小例子分析了Timer執行過程,牽涉的執行執行緒雖然只有兩個,但實際場景會比上面複雜一些。 首先通過一張簡單類圖(只列出簡單的依賴關係)看一下Timer暴露的介面。 為了演示Timer所暴露的介面,下面舉一個極端的例子(每一個介面方法面
muduo網路庫原始碼閱讀Step by Step
Posted on: Nov 26 2015 Categories: muduo C++ Tags: muduo 一般寫服務端程式都需要有一個稱手的網路庫來幫我們處理瑣碎的網路通訊細節,比如連線的建立、關閉,讀取資料,傳送資料,接收、傳送緩衝區的管理等,常用的C/C++網路庫有libevent,
muduo網路庫原始碼學習————執行緒池實現
muduo庫裡面的執行緒池是固定執行緒池,即建立的執行緒池裡面的執行緒個數是一定的,不是動態的。執行緒池裡面一般要包含執行緒佇列還有任務佇列,外部程式將任務存放到執行緒池的任務佇列中,執行緒池中的執行緒佇列執行任務,也是一種生產者和消費者模型。muduo庫中的執
【Go】筆記三 | 庫原始碼檔案
庫原始碼檔案不能被直接執行,它僅用於存放程式實體。只要遵從 Go 語言規範,這些程式實體就可以被其他程式碼使用。 首發地址:庫原始碼檔案 核心知識 程式碼包宣告 程式碼包引用 模組級私有internal 程式實體是什麼? 在 Go 語言中,它是變數
muduo網路庫原始碼解析 七
這一章節,我們來分析多執行緒TcpServer,首先分析muduo one loop per thread的基石——EventLoopThread class,EventLoopThread會啟動自己的執行緒,並在其中執行EventLoop::loop(),關鍵的start
【 專欄 】- Python3網路爬蟲入門
Python3網路爬蟲入門 歡迎Follow、Star:https://github.com/Jack-Cherish/python-spider 進階教程:http://cuijiahua.com/blog/spider/
muduo網路庫原始碼解析 五
TcpConnection用來管理連線,包括連線的狀態、訊息的處理(發、收),該類是muduo中唯一一個實用shared_ptr來進行管理的類,也是唯一繼承enable_shared_from_this的類,這源於TcpConnection類的模糊的生命期。在本章的結尾我們
Redis網路庫原始碼分析(1)之介紹篇
一、前言 Redis網路庫是一個單執行緒EPOLL模型的網路庫,和Memcached使用的libevent相比,它沒有那麼龐大,程式碼一共2000多行,因此比較容易分析。其實網上已經有非常多有關這個網
Redis網路庫原始碼分析(3)之ae.c
一、aeCreateEventLoop & aeCreateFileEvent 上一篇文章中,我們已經將伺服器啟動,只是其中有些細節我們跳過了,比如aeCreateEventLoop函式到底做了什麼? 接下來我們要分析ae.c檔案,它是整個Redis
libevent高效能網路庫原始碼分析——事件(event)及其介面(三)
libevent的結構 event結構 // include/event2/event_struct.h struct event { TAILQ_ENTRY(event) ev_active_next; // 已就緒的事件連結串列
muduo網路庫原始碼解析 四
這一章節我們首先來解析用到的socket的基礎函式: 1、位元組序轉換函式封裝為HostToNetwork16、HostToNetwork32類似命名,原函式為htons、htonl,封裝後方便記憶與書寫,標頭檔案<netinet/in.h> 2、地址轉換函式t
【Shiro】- 認證授權過程原始碼分析
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>