poll模型最关键的算法是如何调度线程池来处理有读写的连接,但是本书在4400位置附近只提了一句:「muduo目前采用最简单的round-robin算法来选取poll中的EventLoop...」。
为什么有问题?1、采用轮询的方法不能保证线程之间调度的公平(即使线程池采用和CPU核数相同的线程数并绑定线程到各核心上),因为有些连接可能读写频繁,有些连接则可能数据寥寥,这样有的核心很忙有的却很闲,如此CPU就未被完全利用;2、如果采用比CPU核心数多的线程,则频繁的轮询调度可能导致频繁地切换线程,性能会大受影响。
也就是说调度的基本粒度应该是每个fd的每个读或者写,而不是每个fd(上所有的读写)。
比较高效地实现应该是Windows的IOCP,不过Linux从2.6Kernel开始已经支持异步IO了,叫做Linux native AIO。
关键算法有问题
《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