muduo 源码分析
文章平均质量分 74
学习muduo源码时的一点心得和体会
Shonm
用blog记录点点滴滴。。。成长的轨迹一步一个印
展开
-
自己写一个网络库的心得
总是在看网络相关的代码,还没有完整的实现过一个网络库。南宋大诗人陆游有云,纸上得来终觉浅,绝知此事要躬行。哈哈这也是我们高中的校训之一。这两周抽了点时间实现了一个小型的网络库,深度参考了muduo,只不过我是用C语言实现的,名字就叫muevent。muduo是用C++的,我为什么要用C语言呢,而且我曾经用C++的时间要远多于C。因为C语言更加接近底层实现,C++干了太多不为人知的事,毕竟...原创 2019-04-12 19:50:48 · 1940 阅读 · 0 评论 -
muduo一个简单echo服务器的分析
muduo一个简单echo服务器的分析前两篇写muduo网络框架线程处理,这两篇通过一个小的echo服务器来完整说明这个网络事件处理的流程。echo是muduo自带的例子,十分简单:int main(){ LOG_INFO << "pid = " << getpid(); muduo::net::EventLoop loop; muduo::net:...原创 2018-08-03 17:53:40 · 1353 阅读 · 0 评论 -
muduo多线程的启动
上篇说了多线程处理的概述,这篇说说具体实现。muduo的多线程是由线程池中启动的。线程池类EventLoopThreadPool在TcpServer类中创建一个新的实例。发现在muduo中,各种类的关系基本上引用和包含即组合关系,很少有派生关系的,没有继承关系就没有虚函数的应用了。可能陈硕觉得继承关系比较复杂,耦合度太高,破坏整体设计。但是我觉得muduo中那么多不同种类的智能指针,还有基...原创 2018-08-03 16:08:06 · 842 阅读 · 0 评论 -
muduo 多线程的处理
一般网络编程中为什么会用到多线程呢,无非是充分利用服务器多核的特性,提高网络并发量,吞吐率等。一般情况下,我们可以轻松想到这样的模型:主线程中监听socket连接事件,当产生新的连接时生成新的线程来处理。这种方式比较直接,但是有些不好处理的地方,例如线程的数量,真的是一个连接开一个线程吗。其实可以用线程池来解决这个问题,那说到线程池,那又如何解决线程与连接对应的问题,毕竟一个连接肯定是始终要在一个...原创 2018-08-03 11:26:45 · 2116 阅读 · 1 评论 -
一个典型reactor网络模型实现
这些天一直在研究网络编程源码,发现很多开源项目都用到了reactor网络模式,例如libevent,skynet,muduo等等。现在对reactor模式也有了一定的认识。Reactor模式是编写高性能网络服务器的必备技术之一,它具有如下的优点:1)响应快,不必为单个同步时间所阻塞,虽然Reactor本身依然是同步的;2)编程相对简单,可以最大程度的避免复杂的多线程及同步问题,并且避免了多...原创 2018-07-16 23:40:03 · 2551 阅读 · 3 评论 -
一个muduo的简单实现
前篇大致介绍了一下muduo,这篇探讨一下大致的代码实现。muduo是基于反应堆reactor,且one loop per thread模式的。网络服务器两大类型的socket是监听socket和连接socket,我们可以在两种各自的线程里面对他们进行操作,每个线程里有事件循环来处理各种io事件。我们知道reactor模式是基于事件回调的,为了处理好每个事件的回调,我们先构造一个事件结构体...原创 2018-07-10 13:32:45 · 5101 阅读 · 3 评论 -
muduo源码分析(一)
muduo是个基于现代C++高效的高并发网络库,他依赖boost库,由陈硕大神编写,更多详情介绍,请看点击打开链接muduo代码结构比较清晰易懂,各个细节处理的非常完美,是一个非常值得学习的开源库。基于他是个网络库,开篇我剖析他的网络相关部分的结果,各个类的继承,调用关系。网络服务器要处理的对象无外乎,监听者TcpServer,连接接收者Acceptor,连接者TcpConnection等...原创 2018-06-14 11:50:30 · 21248 阅读 · 2 评论