從工程師到系統架構師之路:用 muduo C++ 開發網路多執行緒應用程式 (舊版: 用 C++ 開發頂級多執行緒網路函數庫 Muduo) | 拾書所

從工程師到系統架構師之路:用 muduo C++ 開發網路多執行緒應用程式 (舊版: 用 C++ 開發頂級多執行緒網路函數庫 Muduo)

$ 502 元 原價 590

<內容簡介>

 

本書專注於簡單容易了解的程式碼,以及最接近C語言的語法,並且大量應用多執行緒的思路,開發出來的非阻塞式(Non-blocking)網路程式庫,比同級產品快了20%,程式碼卻少了50%,充份展現C++的小而美且快。除了C++之外,本書亦充份介紹目前Scale out網路架構的概念,讓你不但可快速學會C++的網路開發,更可了解目前最新的雲端趨勢。

想學好C++就從全球第一個華人開發的頂級C++網路程式庫Muduo開始。本書主要說明採用現代C++ 在x86-64 Linux 上撰寫多執行緒TCP 網路服務程式的主流標準技術,重點說明多執行緒網路服務器的一種IO 模型,即one loopper thread。這是一種適應性強的模型,也是Linux 下以native 語言撰寫使用者態高性能網路程式最成熟的模式,熟練之後可順利地開發各種常見的服務端網路應用程式。本書以muduo 網路函數庫為例,說明這種程式設計模型的使用方法及注意事項。

C++學習時間長,一旦上手,開發出程式碼的超高速度是Java、C#等其它語言無法比較的。

 

<章節目錄>

 

第1 部分 C++ 多執行緒系統程式設計
Chapter 01 符合執行緒安全的物件生命期管理
1.1 當解構函數遇到多執行緒
1.1.1 符合執行緒安全的定義
1.1.2 MutexLock 與 MutexLockGuard
1.1.3 一個符合執行緒安全的 Counter 範例
1.2 物件的建立很簡單
1.3 銷毀太難
1.3.1 mutex 不是辦法
1.3.2 作為資料成員的 mutex 不能保護解構
1.4 符合執行緒安全的 Observer 有多難
1.5 原始指標有何不妥
1.6 神器 shared_ptr/weak_ptr
1.7 插曲:系統地避免各種指標錯誤
1.8 應用到 Observer 上
1.9 再論 shared_ptr 的符合執行緒安全
1.10 shared_ptr 技術與陷阱
1.11 物件集區
1.11.1 enable_shared_from_this
1.11.2 弱回呼
1.12 替代方案
1.13 心得與小結
1.14 Observer 之謬
Chapter 02 執行緒同步精要
2.1 互斥器(mutex)
2.1.1 只使用非遞迴的 mutex
2.1.2 鎖死
2.2 條件變數(condition variable)
2.3 不要用讀寫鎖和號誌
2.4 封裝 MutexLock、MutexLockGuard、Condition
2.5 符合執行緒安全的 Singleton 實現
2.6 sleep(3) 不是同步基本操作
2.7 歸納與總結
2.8 借 shared_ptr 實現copy-on-write
Chapter 02 多執行緒伺服器的適用場合與常用程式設計模型
3.1 處理程序與執行緒
3.2 單執行緒伺服器的常用程式設計模型
3.3 多執行緒伺服器的常用程式設計模型
3.3.1 one loop per thread
3.3.2 執行緒池
3.3.3 推薦模式
3.4 處理程序間通訊只用TCP
3.5 多執行緒伺服器的適用場合
3.5.1 必須用單執行緒的場合
3.5.2 單執行緒程式的優缺點
3.5.3 適用多執行緒程式的場景
3.6 「多執行緒伺服器的適用場合」例釋與答疑
Chapter 04 C++ 多執行緒系統程式設計精要
4.1 基本執行緒基本操作的選用
4.2 C/C++系統函數庫的符合執行緒安全性
4.3 Linux 上的執行緒標識
4.4 執行緒的建立與銷毀的守則
4.4.1 pthread_cancel 與C++
4.4.2 exit(3) 在C++ 中不是符合執行緒安全的
4.5 善用__thread 關鍵字
4.6 多執行緒與IO
4.7 用RAII 包裝檔案描述符號
4.8 RAII 與fork()
4.9 多執行緒與fork()
4.10 多執行緒與signal
4.11 Linux 新增系統呼叫的啟示
Chapter 05 高效的多執行緒記錄檔
5.1 功能需求
5.2 效能需求
5.3 多執行緒非同步記錄檔
5.4 其他方案
第2 部分 muduo 網路函數庫
Chapter 06 muduo 網路函數庫簡介
6.1 由來
6.2 安裝
6.3 目錄結構
6.3.1 程式結構
6.3.2 實例
6.3.3 執行緒模型
6.4 使用教學
6.4.1 TCP 網路程式設計本質論
6.4.2 echo 服務的實現
6.4.3 七步實現finger 服務&

Brand Slider