《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

陈硕

中国•香港

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

学之者生,用之者死——ACE历史与简评

学之者生,用之者死——ACE历史与简评陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice2010 March 10ACE 是现代面向对象网络编程的鼻祖,确立了许...

  • erbak
  • erbak
  • 2011-08-12 16:34
  • 1

STL源码笔记(13)—序列式容器之栈和队列

stl 栈和队列的简介

自己写的HTTP服务器与muduo库对比——找出代码中的不足

前言: 在阅读muduo网络库源码之前,自己先写尝试写了一个HTTP服务器,写的时候尽量使用了最新的C++11和我所知道的比较好的网络模型,并且尝试将各种资源或者网络事件进行解藕,努力做到代码的复用...

Muduo 网络编程示例之零:前言

我将会写一系列文章,介绍用 muduo 网络库完成常见的 TCP 网络编程任务。这些例子都比较简单,逻辑不复杂,代码也很短,适合摘取关键部分放到博客上。其中一些有一定的代表性与针对性,比如“如何传输完...

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

muduo实现简单的HttpServer

为什么多线程读写 shared_ptr 要加锁?

为什么多线程读写 shared_ptr 要加锁?陈硕(giantchen_AT_gmail_DOT_com)2012-01-28最新版下载:http://chenshuo.googlecode.com...

如何发送和接收应用层数据包?

当两台电脑要通过网络)传输数据的时候,应用层必须要制定好自己的头部,最简单的头部可以是这样(以传输图片为例): 起始标志0xFFEF(short类型,表明这是一个包的开头)+图片数据长度(int类型...

protobuf v3测试

谷歌最近发布了v3版本的protobuf,以前的protobuf被称之为v2,二者之间的区别其特点见我上一篇blog《protobuf一些注意事项》。     个人以为v3要比v2好处就在于:简洁,...

Splunk for 邮件系统(Exchange Mail Server) and 目录

Splunk for 邮件系统(Exchange Mail Server) and 目录服务(AD)管理与应用 作者:徐逸平 对企业来说,回应客户问题的时间长短反映出一个企业的竞争力。 对IT人员...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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