《Linux 多线程服务端编程:使用 muduo C++ 网络库》网上书店订购

原创 2013年01月11日 12:43:50

《Linux 多线程服务端编程:使用 muduo C++ 网络库》网上书店订购

内容简介

本书主要讲述采用现代 C++ 在 x86-64 Linux 上编写多线程 TCP 网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即 one loop per thread。这是在 Linux 下以 native 语言编写用户态高性能网络程序最成熟的模式,掌握之后可顺利地开发各类常见的服务端网络应用程序。本书以 muduo 网络库为例,讲解这种编程模型的使用方法及注意事项。

本书的宗旨是贵精不贵多。掌握两种基本的同步原语就可以满足各种多线程同步的功能需求,还能写出更易用的同步设施。掌握一种进程间通信方式和一种多线程网络编程模型就足以应对日常开发任务,编写运行于公司内网环境的分布式服务统。

基本信息

cover

出版社:电子工业出版社

页数:xvi+600

定价:人民币89元

ISBN:9787121192821

豆瓣及网上书店预订

豆瓣:http://book.douban.com/subject/20471211/ 
互动:http://product.china-pub.com/3021861 
亚马逊:http://www.amazon.cn/dp/B00AYS2KL0 
当当: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网络库简介: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 节。

前言(节选)

本书主要讲述采用现代 C++ 在 x86-64 Linux 上编写多线程 TCP 网络服务程序的主流常规技术,这也是我对过去 5 年编写生产环境下的多线程服务端程序的经验总结。本书重点讲解多线程网络服务器的一种 IO 模型,即 one loop per thread。这是一种适应性较强的模型,也是 Linux 下以 native 语言编写用户态高性能网络程序最成熟的模式, 掌握之后可顺利地开发各类常见的服务端网络应用程序。本书以 muduo 网络库为例,讲解这种编程模型的使用方法及注意事项。

muduo 是一个基于非阻塞 IO 和事件驱动的现代 C++ 网络库,原生支持 one loop per thread 这种 IO 模型。muduo 适合开发 Linux 下的面向业务的多线程服务端网络应用程序,其中“面向业务的网络编程”的定义见附录 A。 “现代 C++”指的不是 C++11 新标准,而是 2005 年 TR1 发布之后的 C++ 语言和库。 与传统 C++ 相比,现代 C++ 的变化主要有两方面:资源管理(见第 1 章)与事件回调(见第 449 页)。

本书不是多线程编程教程,也不是网络编程教程,更不是 C++ 教程。读者应该已经大致读过《UNIX 环境高级编程》、《UNIX 网络编程》、《C++ Primer》或与之内容相近的书籍。本书不谈 C++11,因为目前(2012 年)主流的 Linux 服务端发行版的 g++ 版本都还停留在 4.4,C++11 进入实用尚需一段时日。

本书适用的硬件环境是主流 x86-64 服务器,多路多核 CPU、几十 GB 内存、千兆以太网互联。除了第 5 章讲诊断日志之外,本书不涉及文件 IO。

本书分为四大部分,第 1 部分“C++ 多线程系统编程”考察多线程下的对象生命期管理、线程同步方法、多线程与 C++ 的结合、高效的多线程日志等。第 2 部分“muduo 网络库”介绍使用现成的非阻塞网络库编写网络应用程序的方法,以及 muduo 的设计与实现。第 3 部分“工程实践经验谈”介绍分布式系统的工程化开发方法和 C++ 在工程实践中的功能特性取舍。第 4 部分“附录”分享网络编程和 C++ 语言的学习经验。

本书的宗旨是贵精不贵多。掌握两种基本的同步原语就可以满足各种多线程同步的功能需求,还能写出更易用的同步设施。掌握一种进程间通信方式和一种多线程网络编程模型就足以应对日常开发任务,编写运行于公司内网环境的分布式服务系统。(本书不涉及分布式存储系统,也不涉及 UDP。)

术语与排版范例


本书大量使用英文术语,甚至有少量英文引文。设计模式的名字一律用英文,例如 Observer、Reactor、Singleton。在中文术语不够突出时,也会使用英文,例如 class、heap、event loop、STL algorithm 等。注意几个中文 C++ 术语:对象实体(instance) 、函数重载决议(resolution) 、模板具现化(instantiation) 、覆写(override)虚函数、提领(dereference)指针。本书中的英语可数名词一般不用复数形式,例如两个 class,6 个 syscall;但有时会用 (s) 强调中文名词是复数。fd 是文件描述符(file descriptor)的缩写。“CPU 数目”一般指的是核(core)的数目。用诸如§11.5 表示本书第 11.5 节,L42 表示上下文中出现的第 42 行代码。[JCP]、[CC2e] 等是参考文献,见书末清单。

代码

本书的示例代码以开源项目的形式发布在 GitHub 上,
地址是 http://github.com/chenshuo/recipes/ 和 http://github.com/chenshuo/muduo/ 。本书配套页面提供全部源代码打包下载,正文中出现的类似 recipes/thread 的路径是压缩包内的相对路径,读者不难找到其对应的 GitHub URL。

本书假定读者熟悉 diff -u 命令的输出格式,用于表示代码的改动。

本书正文中出现的代码有时为了照顾排版而略有改写,例如改变缩进规则,去掉单行条件语句前后的花括号等。就编程风格而论,应以电子版代码为准。

联系方式


邮箱:giantchen_at_gmail.com

主页:http://chenshuo.com/book (正文和脚注中出现的 URL 可从这里找到。 )

微博:http://weibo.com/giantchen

博客:http://blog.csdn.net/Solstice

代码:http://github.com/chenshuo

陈硕

中国•香港

初探《Linux多线程服务端编程 使用muduo C++网络库》

第1部分 c++多线程系统编程第1章 线程安全的对象生命期管理1. 多个线程同时看到一个对象时,析构可能出现race condition 2. 线程安全的类的定义:多个线程同事访问时,其表现出正确的行...
  • mashuiping
  • mashuiping
  • 2017年04月08日 00:24
  • 778

《Linux 多线程服务端编程:使用 muduo C++ 网络库》电子版上市

《Linux 多线程服务端编程:使用 muduo C++ 网络库》 电子版已在京东上市销售。购买地址:http://e.jd.com/30149978.html阅读效果:PCiPad目前京东的阅读器没...
  • Solstice
  • Solstice
  • 2013年11月01日 10:36
  • 31238

Linux多线程服务端编程:使用muduo C++网络库

常见的并发网络服务程序设计方案 W. Richard Stevens 的《UNIX 网络编程(第2 版)》第27 章“Client-ServerDesign Alternatives”介绍了十来种当...
  • broadview2006
  • broadview2006
  • 2013年02月20日 08:22
  • 2529

Linux多线程服务器端编程:使用muduo C++网络库 读书笔记

1. 需要注意: scoped_ptr/shared_ptr/weak_ptrdou
  • huanzai2
  • huanzai2
  • 2014年10月30日 22:36
  • 944

《linux多线程服务端编程muduo网络库的使用》读后感

linux多线程服务端编程muduo网络库的使用 读后感
  • zhangxiao93
  • zhangxiao93
  • 2016年12月13日 22:49
  • 470

muduo网络库源码阅读Step by Step

一般写服务端程序都需要有一个称手的网络库来帮我们处理琐碎的网络通信细节,比如连接的建立、关闭,读取数据,发送数据,接收、发送缓冲区的管理等,常用的C/C++网络库有libevent,asio,libe...
  • andylau00j
  • andylau00j
  • 2017年06月20日 17:12
  • 337

《Linux多线程服务端编程:使用muduo C++网络库》学习笔记

4.9 多线程与forkfork()一般不能在多线程中调用,因为Linux的fork只克隆当前线程的thread of ctrl,不克隆其他线程。即,fork之后子进程只有一个线程,其他线程都消失了。...
  • libaineu2004
  • libaineu2004
  • 2018年01月03日 15:20
  • 36

《Linux多线程服务端编程》—muduo网络库(1)

TCP网络编程本质论思维转换:把原来“主动调用recv(2)来接收数据,主动调用accept(2)来接受新连接,主动调用send(2)来发送数据”的思路转换为“注册一个收数据的回调,网络库收到数据会调...
  • jiange_zh
  • jiange_zh
  • 2016年09月07日 23:39
  • 761

从零开始学写HTTP服务器(六)使用muduo网络库

muduo实现简单的HttpServer
  • zhangxiao93
  • zhangxiao93
  • 2016年12月28日 15:03
  • 1838

<Linux多线程服务端编程>学习记录

使用智能指针解决多线程下 类的解析冲突问题 有这样一个场景 使用StockFactory记录Stock的信息  容器是map; 代码如下:  cpp1  运行显示如下 Stock[007E8818]...
  • stecdeng
  • stecdeng
  • 2017年03月02日 13:55
  • 263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《Linux 多线程服务端编程:使用 muduo C++ 网络库》网上书店订购
举报原因:
原因补充:

(最多只允许输入30个字)