Please indicate the source: http://blog.csdn.net/gaoxiangnumber1
Welcome to my github: https://github.com/gaoxiangnumber1
6.6 详解muduo多线程模型
?本节以Sudoku Solver为例,回顾了并发网络服务程序的多种设计方案,并介绍了使用muduo网络库编写多线程服...
分类:
其他好文 时间:
2016-04-30 06:38:32
阅读次数:
171
TcpConnection是使用shared_ptr来管理的类,因为它的生命周期模糊。TcpConnection表示已经建立或正在建立的连接,建立连接后,用户只需要在上层类如TcpServer中设置连接到来和消息到来的处理函数,继而回调TcpConnection中的 setConnectionCallback和setMessageCallback函数,实现对事件的处理。用户需要关心的事件是有限的,...
分类:
其他好文 时间:
2016-04-22 18:47:44
阅读次数:
189
首先,我们先提一下对Socket的封装(不复杂,所以简单说一下)。
Endian.h : 封装了字节序转换函数(全局函数,位于muduo::net::sockets名称空间中)。
SocketsOps.h/ SocketsOps.cc :封装了socket相关系统调用。
Socket.h/Socket.cc(Socket类): 用RAII方法封装socket file descrip...
分类:
其他好文 时间:
2016-04-16 02:03:15
阅读次数:
216
muduo的并发模型为one loop per thread+ threadpool。为了方便使用,muduo封装了EventLoop和Thread为EventLoopThread,为了方便使用线程池,又把EventLoopThread封装为EventLoopThreadPool。所以这篇博文并没有涉及到新鲜的技术,但是也有一些封装和逻辑方面的注意点需要我们去分析和理解。
EventLoopTh...
分类:
其他好文 时间:
2016-04-15 14:08:32
阅读次数:
244
从这一篇博文起,我们开始剖析Muduo网络库的源码,主要结合《Linux多线程服务端编程》和网上的一些学习资料!
(一)TCP网络编程的本质:三个半事件
1. 连接的建立,包括服务端接受(accept) 新连接和客户端成功发起(connect) 连接。TCP 连接一旦建立,客户端和服务端是平等的,可以各自收发数据。
2. 连接的断开,包括主动断开(close 或shutdown) 和被动断开...
分类:
其他好文 时间:
2016-04-04 01:36:55
阅读次数:
344
最近开始学习陈硕的muduo C++ Linux多线程网络库,首先当然是要安装。其间遇到过不少问题,最后不能说都解决了,只能说找到了一条不会遇到什么问题的路线。总结起来是两点: 注意各软件之间要版本匹配。 尽量使用最新版本的软件。 下面是从零开始在虚拟机上安装 Debian 8 以及 muduo 库
分类:
其他好文 时间:
2016-02-28 12:36:41
阅读次数:
434
内容推荐本书主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。这是在Linux下以native语言编写用户态高性能网络程序最成熟的模式,掌握之后可顺利地开发各类常见的...
分类:
编程语言 时间:
2016-01-26 20:16:21
阅读次数:
262
Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程这里的函数式编程的设计以muduo为例进行对比说明;Reactor实现架构对比面向对象的设计类图如下:函数式编程以muduo为例,设计类图如下:面向对象的Reactor方案设计我们先看看面向对象的设计方案,想想为什么这么做; 拿出Rea...
分类:
其他好文 时间:
2015-12-31 08:51:51
阅读次数:
247
1、Khala简介 Khala(卡拉)是用C++实现的TCP网络框架。底层采用muduo网络库作为网络IO+线程模型,并封装实现了网络实现与业务逻辑分离的多线程网络框架,具有超时退出、多设备多事件注册支持、设备生命周期管理、设备间通信等功能。项目托管地址:https://github.com/mo....
分类:
编程语言 时间:
2015-12-15 22:42:21
阅读次数:
236
所谓消息分发(muduo 中,就是接收到buffer之后,额,或者说是 protobuf),在简单的程序设计里面的话,估计就是 type-switch 了,但是这样的话,肯定就不好扩展维护啦。最后的方法就是,可以根据 type-name 自动去调用相应的方法。typedef boost::funct...
分类:
其他好文 时间:
2015-12-10 21:31:21
阅读次数:
333