內(nèi)容簡介
本書主要講述采用現(xiàn)代 C++ 在 x86-64 Linux 上編寫多線程 TCP 網(wǎng)絡(luò)服務(wù)程序的主流常規(guī)技術(shù),重點講解一種適應(yīng)性較強的多線程服務(wù)器的編程模型,即 one loop per thread。這是在 Linux 下以 native 語言編寫用戶態(tài)高性能網(wǎng)絡(luò)程序最成熟的模式,掌握之后可順利地開發(fā)各類常見的服務(wù)端網(wǎng)絡(luò)應(yīng)用程序。本書以 muduo 網(wǎng)絡(luò)庫為例,講解這種編程模型的使用方法及注意事項。
本書的宗旨是貴精不貴多。掌握兩種基本的同步原語就可以滿足各種多線程同步的功能需求,還能寫出更易用的同步設(shè)施。掌握一種進程間通信方式和一種多線程網(wǎng)絡(luò)編程模型就足以應(yīng)對日常開發(fā)任務(wù),編寫運行于公司內(nèi)網(wǎng)環(huán)境的分布式服務(wù)統(tǒng)。
基本信息
出版社:電子工業(yè)出版社
頁數(shù):xvi+600
定價:人民幣89元
ISBN:9787121192821
豆瓣及網(wǎng)上書店預(yù)訂
豆瓣:http://book.douban.com/subject/20471211/
互動:http://product.china-pub.com/3021861
亞馬遜:http://www.amazon.cn/dp/B00AYS2KL0
當(dāng)當(dāng):http://product.dangdang.com/product.aspx?product_id=23162953
京東:http://book.360buy.com/11163782.html
試讀樣章
前言與目錄:https://chenshuo-public.s3.amazonaws.com/pdf/preamble.pdf
第1章:線程安全的對象生命期管理:https://chenshuo-public.s3.amazonaws.com/pdf/chap1.pdf
第6章:muduo網(wǎng)絡(luò)庫簡介:https://chenshuo-public.s3.amazonaws.com/pdf/chap6.pdf
附錄:https://chenshuo-public.s3.amazonaws.com/pdf/appendix.pdf
樣章合集下載:http://vdisk.weibo.com/s/mtupb 共150頁,包括第 11.5 節(jié)。
前言(節(jié)選)
本書主要講述采用現(xiàn)代 C++ 在 x86-64 Linux 上編寫多線程 TCP 網(wǎng)絡(luò)服務(wù)程序的主流常規(guī)技術(shù),這也是我對過去 5 年編寫生產(chǎn)環(huán)境下的多線程服務(wù)端程序的經(jīng)驗總結(jié)。本書重點講解多線程網(wǎng)絡(luò)服務(wù)器的一種 IO 模型,即 one loop per thread。這是一種適應(yīng)性較強的模型,也是 Linux 下以 native 語言編寫用戶態(tài)高性能網(wǎng)絡(luò)程序最成熟的模式, 掌握之后可順利地開發(fā)各類常見的服務(wù)端網(wǎng)絡(luò)應(yīng)用程序。本書以 muduo 網(wǎng)絡(luò)庫為例,講解這種編程模型的使用方法及注意事項。
muduo 是一個基于非阻塞 IO 和事件驅(qū)動的現(xiàn)代 C++ 網(wǎng)絡(luò)庫,原生支持 one loop per thread 這種 IO 模型。muduo 適合開發(fā) Linux 下的面向業(yè)務(wù)的多線程服務(wù)端網(wǎng)絡(luò)應(yīng)用程序,其中“面向業(yè)務(wù)的網(wǎng)絡(luò)編程”的定義見附錄 A。 “現(xiàn)代 C++”指的不是 C++11 新標(biāo)準(zhǔn),而是 2005 年 TR1 發(fā)布之后的 C++ 語言和庫。 與傳統(tǒng) C++ 相比,現(xiàn)代 C++ 的變化主要有兩方面:資源管理(見第 1 章)與事件回調(diào)(見第 449 頁)。
本書不是多線程編程教程,也不是網(wǎng)絡(luò)編程教程,更不是 C++ 教程。讀者應(yīng)該已經(jīng)大致讀過《UNIX 環(huán)境高級編程》、《UNIX 網(wǎng)絡(luò)編程》、《C++ Primer》或與之內(nèi)容相近的書籍。本書不談 C++11,因為目前(2012 年)主流的 Linux 服務(wù)端發(fā)行版的 g++ 版本都還停留在 4.4,C++11 進入實用尚需一段時日。
本書適用的硬件環(huán)境是主流 x86-64 服務(wù)器,多路多核 CPU、幾十 GB 內(nèi)存、千兆以太網(wǎng)互聯(lián)。除了第 5 章講診斷日志之外,本書不涉及文件 IO。
本書分為四大部分,第 1 部分“C++ 多線程系統(tǒng)編程”考察多線程下的對象生命期管理、線程同步方法、多線程與 C++ 的結(jié)合、高效的多線程日志等。第 2 部分“muduo 網(wǎng)絡(luò)庫”介紹使用現(xiàn)成的非阻塞網(wǎng)絡(luò)庫編寫網(wǎng)絡(luò)應(yīng)用程序的方法,以及 muduo 的設(shè)計與實現(xiàn)。第 3 部分“工程實踐經(jīng)驗談”介紹分布式系統(tǒng)的工程化開發(fā)方法和 C++ 在工程實踐中的功能特性取舍。第 4 部分“附錄”分享網(wǎng)絡(luò)編程和 C++ 語言的學(xué)習(xí)經(jīng)驗。
本書的宗旨是貴精不貴多。掌握兩種基本的同步原語就可以滿足各種多線程同步的功能需求,還能寫出更易用的同步設(shè)施。掌握一種進程間通信方式和一種多線程網(wǎng)絡(luò)編程模型就足以應(yīng)對日常開發(fā)任務(wù),編寫運行于公司內(nèi)網(wǎng)環(huán)境的分布式服務(wù)系統(tǒng)。(本書不涉及分布式存儲系統(tǒng),也不涉及 UDP。)
術(shù)語與排版范例
本書大量使用英文術(shù)語,甚至有少量英文引文。設(shè)計模式的名字一律用英文,例如 Observer、Reactor、Singleton。在中文術(shù)語不夠突出時,也會使用英文,例如 class、heap、event loop、STL algorithm 等。注意幾個中文 C++ 術(shù)語:對象實體(instance) 、函數(shù)重載決議(resolution) 、模板具現(xiàn)化(instantiation) 、覆寫(override)虛函數(shù)、提領(lǐng)(dereference)指針。本書中的英語可數(shù)名詞一般不用復(fù)數(shù)形式,例如兩個 class,6 個 syscall;但有時會用 (s) 強調(diào)中文名詞是復(fù)數(shù)。fd 是文件描述符(file descriptor)的縮寫。“CPU 數(shù)目”一般指的是核(core)的數(shù)目。用諸如§11.5 表示本書第 11.5 節(jié),L42 表示上下文中出現(xiàn)的第 42 行代碼。[JCP]、[CC2e] 等是參考文獻,見書末清單。
代碼
本書的示例代碼以開源項目的形式發(fā)布在 GitHub 上,
地址是 http://github.com/chenshuo/recipes/ 和 http://github.com/chenshuo/muduo/ 。本書配套頁面提供全部源代碼打包下載,正文中出現(xiàn)的類似 recipes/thread 的路徑是壓縮包內(nèi)的相對路徑,讀者不難找到其對應(yīng)的 GitHub URL。
本書假定讀者熟悉 diff -u 命令的輸出格式,用于表示代碼的改動。
本書正文中出現(xiàn)的代碼有時為了照顧排版而略有改寫,例如改變縮進規(guī)則,去掉單行條件語句前后的花括號等。就編程風(fēng)格而論,應(yīng)以電子版代碼為準(zhǔn)。
聯(lián)系方式
郵箱:giantchen_at_gmail.com
主頁:http://chenshuo.com/book (正文和腳注中出現(xiàn)的 URL 可從這里找到。 )
微博:http://weibo.com/giantchen
博客:http://blog.csdn.net/Solstice
代碼:http://github.com/chenshuo
陳碩
中國•香港