再这里需要提前说一下muduo库当中的一个特色One Loop Per Thread.即一个线程一个EventLoop(一一对应)并且没一个线程负责一组文件描述符集合,执行对应文件描述符对应的回调的时候,必须再当前线程执行回调不准跑到其线程去执行,至于这个是怎么实现的后面再说 下面我们来看一下EventLoop的声明部分再看一下重要的方法和...
Muduo库是基于Reactor模式实现的TCP网络编程库。该文章后续篇幅都是围绕Multi-reactor模型进行展开。Multi-Reactor模型如下所示(网上找的图,不是我画的): 2. Multi-Reactor架构的三大核心模块介绍 2.1 概述 Muduo库有三个核心组件支撑一个reactor实现 [持续] 的 [监听] 一组fd,并根据每个fd上发生的事件 [调用] ...
g++ -o muduo_test muduo_test.c -I头文件路径 -L库文件路径 -lmuduo_net -lmuduo_base 陈硕先生的Github有一个项目展示了如何使用CMake和普通makefile编译基于muduo的程序,可参阅:https://github.com/chenshuo/muduo-tutorial 演示案例 待续 四、目录结构 muduo命名规则: 源代码文件名与class...
1 整体框架说明 muduo整体是按照回调函数方式编写的,这样虽然在调用的时候更方便,但对于初学者梳理逻辑来说就有点“绕”了。看“别人家”的网络库,抓住以下几点有利于快速理解代码: 网络库是怎样bind、listen和accept的 epoll模型被封装成啥样了,是怎样调度读写事件的 accept描述符是怎样被注册到epoll模型中的 muduo...
一、Muduo库简介 Muduo库是由陈硕大佬开发的,基于Linux环境下的C++实现的多Reactor多线程的高性能网络服务器。它采用了非阻塞IO和事件驱动的设计思想,充分利用了多核CPU的并行处理能力,使得网络服务的性能得到了极大的提升。 二、Muduo库的核心概念 EventLoop:事件循环是Muduo库的核心组件,每个线程都有一个独立的事件...
这里的事件在muduo中包括Socket可读写事件、定时器事件。在其他网络库中如libevent也包括了signal、用户自...
(3)、muduo的定时器由三个类实现,TimerId、Timer、TimerQueue,用户只能看到第一个类,其它两个都是内部实现细节 TimerId 只有两个成员,TimerId主要用于取消Timer: 代码语言:cpp 复制 /// An opaque identifier, for canceling Timer.///classTimerId:publicmuduo::copyable{// default copy-ctor, dtor and assign...
muduo的基本使用 参考https://github.com/chenshuo/muduo-tutorial/tree/master,将其克隆至本地,然后选择第二种构建方式。 echo-server示例如下: EchoServer.h #pragmaonce#include"muduo/net/TcpServer.h"#include"muduo/net/EventLoop.h"#include"muduo/net/InetAddress.h"#include"muduo/net/TcpConnection.h"...
1.muduo库如何支持多线程 muduo支持多线程的方式:一个程序有多个EventLoop,一个EventLoop属于一个线程,也就是所谓的one Loop per thread EventLoopThread(IO线程类) EventLoopThreadPool(IO线程池类) IO线程池的功能是开启若干个IO线程,并让这些IO线程处于事件循环的状态 ...
Muduo是一个基于C++语言的开源网络库,主要用于开发高性能的服务器应用程序。它包含了TCP/UDP网络编程、多线程并发、定时器、事件驱动等功能,能够帮助开发者快速构建高性能、可扩展的服务器应用。 具体来说,Muduo的作用包括但不限于以下几个方面: 网络编程:Muduo提供了TCP和UDP的封装,使得开发者可以方便地进行网络通信...