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