再这里需要提前说一下muduo库当中的一个特色One Loop Per Thread.即一个线程一个EventLoop(一一对应)并且没一个线程负责一组文件描述符集合,执行对应文件描述符对应的回调的时候,必须再当前线程执行回调不准跑到其线程去执行,至于这个是怎么实现的后面再说 下面我们来看一下EventLoop的声明部分再看一下重要的方法和...
Muduo库是基于Reactor模式实现的TCP网络编程库。该文章后续篇幅都是围绕Multi-reactor模型进行展开。Multi-Reactor模型如下所示(网上找的图,不是我画的): 2. Multi-Reactor架构的三大核心模块介绍 2.1 概述 Muduo库有三个核心组件支撑一个reactor实现 [持续] 的 [监听] 一组fd,并根据每个fd上发生的事件 [调用] ...
Muduo库在实际应用中具有广泛的应用场景。例如,在开发高性能Web服务器、RPC框架、游戏服务器等场景中,Muduo库都能够提供强大的支持。通过Muduo库,开发者可以更加高效地处理并发请求,提升系统的整体性能。 五、总结 Muduo库作为一款优秀的C++网络库,以其高效、稳定、易用的特点受到了广大开发者的喜爱。通过深入解析Muduo...
# 配置可执行文件名add_executable(muduo_test ${SRC_LIST})# 需要链接的外库target_link_libraries(muduo_test muduo_net muduo_base pthread)# 如果库之间有相互依赖,注意把被依赖的放前面
构建自己的muduo库-1 由于muduo库的网络库原本使用了很多boost库的内容,所以我想手写自己的my muduo库,使用C++11特性去替换掉boost部分内容 构建项目建立CMake文件 项目根目录下CMakeLists内容 cmake_minimum_required(VERSION2.5)project(mymuduo)# mymuduo最终编译成so动态库,设置动态库路径,放在根目录的lib文件夹...
muduo库实现rpc框架和http框架 1.muduo库实现异步(非阻塞)rpc框架 陈硕视频教程 代码 代码解析 实现客户端和服务器时,我们要做的工作有: 客户端:调用rpc函数时,需要和服务器端建立连接,并发送request,并设置response返回时的回调函数。这些功能都需要我们自己实现,本项目在RpcChannel类中进行了实现。
1.muduo库如何支持多线程 muduo支持多线程的方式:一个程序有多个EventLoop,一个EventLoop属于一个线程,也就是所谓的one Loop per thread EventLoopThread(IO线程类) EventLoopThreadPool(IO线程池类) IO线程池的功能是开启若干个IO线程,并让这些IO线程处于事件循环的状态 ...
muduo网络库源码解析(1):多线程异步日志库(上) muduo网络库源码解析(2):多线程异步日志库(中) muduo网络库源码解析(3):多线程异步日志库(下) muduo网络库源码解析(4):TimerQueue定时机制 muduo网络库源码解析(5):EventLoop,Channel与事件分发机制 muduo网络库源码解析(6):TcpServer与TcpConnection(上) ...
我们从muduo库的一个使用案例中出发,一步一步来读取源码:案例:muduo_test.cpp #include<muduo/base/...
5. 设置合适的服务端线程数量,muduo库会自己分配I/O线程和worker线程 */classChatServer{public:ChatServer(EventLoop*loop,// 事件循环constInetAddress&listenAddr,// IP + Portconststring&nameArg)// 服务器名称:_server(loop,listenAddr,nameArg),_loop(loop){// 给服务器注册用户连接的创建和断开回调_ser...