9.1分,尼玛,坑谁呢。。。。。
看这里,比较客观
http://ar.newsmth.net/thread-c64b61785ba061.html
muduo适用于什么环境?
muduo的官方一句话自我介绍是:A C++ non-blocking multi-threaded network
library for Linux。
在其readme和wiki中均未提及此lib是否适用于实际场景,于是我花了些时间翻看了一
下,得出的结论是此lib仅限于展示epoll/poll的基本用法,对网络编程初学者是否有参考
价值还有待进一步考察。
任何一个网络产品除了要支持网络event之外,还必须处理另外两种事件:signal和
timer。
muduo也毫无例外。但近看一下就发现muduo对single和timer的支持很有喜感。
除了SIGPIPE被mask之外,muduo没有接管signal。当然muduo这么做是有借口的,反
正有signalfd嘛。在此我想问问各位做网络应用的同学,在你的实际项目中,不用POSIX
的signal接口而用signalfd的,有几个?而如果是从编程初学者教育的角度来看,是介绍
POSIX重要,还是介绍2.6.22引入的一个new feature重要?
而抛弃signal的处理之后,muduo自然轻松了许多,还顺带可以说一句:muduo支持高
级特性signalfd。--嗯,听起来很高级,不过signalfd不是muduo支持的,而是kernel支
持的。
一个网络编程库,timer是重中之重,比到底是用epoll还是select都重要。当然,话说回
来,再吊的库无非也就是个heap为本的数据结构在支持,无非是有些库喜欢说自己的
heap实现比别人都高效,比如haproxy。
但muduo却独辟蹊径,用timerfd,泥玛又是一个高级特性啊,很唬人的。由kernel帮你
管理timer,是不是很吊。
不仅采用了timerfd,muduo还采用了set来保存event,每个big loop里要查超时的时
候,再iterate一遍这个set。
再然后,每次加一个timer,就要冒着一次settime的syscall的风险--这还不够,还得要一
次gettimeofday。别不把syscall当不要钱的可以吗?
你也许可以跑10万个连接,但你敢加上超时的特性吗?muduo如果有做过细致的
benchmark就会知道,一个loop里最花时间的就是timer的处理。
关于muduo的timer处理,槽点太多,我就不一一细述了。回头看看timer,很显然不适
合工业应用,而给初学者做参考。。。嗯,负面参考价值很大。
嗯,今天先说这么多吧。吐槽点还很多,比如那个全功能的http范例,比如对
pthread/fork的支持,比如对内存的使用等等等等。都要一一吐过也不是不可以,不过就
要耐下性子来慢慢写就是。
水军很多啊
对“水军很多啊”的回应
《Linux多线程服务端编程》热门书评
-
推荐《Linux 多线程服务器端编程》
46有用 2无用 赖勇浩 2013-08-27
最近,有一位朋友因为工作需要,需要从网游的客户端编程转向服务器端编程,找我推荐一本书。我推荐了《Linux 多线程服务器端编程——使用 muduo C++ 网络库》给他,他在网上书店看了以后问我为什么推荐这么厚一本书给他,正好这本书我已经早就看完了,一直也想写篇“书评”,就在这里多扯几句。其实实在算...
-
水军很多啊
41有用 24无用 [已注销] 2013-06-18
9.1分,尼玛,坑谁呢。。。。。看这里,比较客观http://ar.newsmth.net/thread-c64b61785ba061.htmlmuduo适用于什么环境? muduo的官方一句话自我介绍是:A C++ non-blocking multi-threaded n...
-
即便不讲C++,书也很有趣
5有用 0无用 hoterran 2013-03-17
草草翻阅了一遍很有意思,C++部分很多没看懂的,准备买本深读。比如 ntp 的实现原理,多线程下为何不能 fork,还有 timefd的使用,好像没讲eventfd,BlockingQueue<T> 确实也非常好用。timing-wheel 的图,个人觉得有点坑爹,轮盘上的刻度容易误解。...
-
linux网络编程力作!
2有用 2无用 嘿嘿嘿嘿 2014-07-01
相比APUE和UNP,该书更像一本实战进阶教程。结合作者提供的开源库muduo,向读者很好的展示了linux网络库开发及多线程服务器开发(就网络编程而言现在市面上的中文书无出其右),同时该书也是一本学习现代C++编程的好书。PS:我们的游戏项目的网络库参考了muduo并做了一些修改,现在运行非常良好...
-
近两年最有收获的一本书
2有用 0无用 曙光 2014-07-16
去年买的这本书,到现在很多章节看了不下3遍,书中并不是讲使用muduo库,而是重点放在怎样实现一个网络库和作者多年来积累的服务端编程经验。不要去在乎什么boost库,这不是重点,重点是各种服务端技术和网络经验。说一点虚的,这是我近两年看的最认真的一本书,最有收获的一本书。如果想做服务端的同学,看看这...
书名: Linux多线程服务端编程
作者: 陈硕
出版社: 电子工业出版社
副标题: 使用muduo C++网络库
出版年: 2013-1-15
页数: 610
定价: 89.00元
装帧: 平装
ISBN: 9787121192821