一、由来2010年3月我写了一篇《学之者生,用之者死——ACE历史与简 评》1,其中提到“我心目中理想的网络库”的样子: ·线程安全,原生支持多核多线程。 ·不考虑可移植性,不跨平台,只支持Linux,不支持Windows。 ·主要支持x86-64,兼顾IA32。(实际上muduo也可以运行在ARM 上。) ·不支持UDP,只支持TCP。 ·不支持IPv6,只支持IPv4。 ·不考虑广域网应...
一、由来2010年3月我写了一篇《学之者生,用之者死——ACE历史与简 评》1,其中提到“我心目中理想的网络库”的样子: ·线程安全,原生支持多核多线程。 ·不考虑可移植性,不跨平台,只支持Linux,不支持Windows。 ·主要支持x86-,兼顾IA32。(实际上muduo也可以运行在ARM 上。) ·不支持UDP,只支持TCP。 ·不支持IPv6,只支持IPv4。 ·不考虑广域网应...
muduo整体由许多类组成: 这些类之间有一些依赖关系,如下:
转载 2017-02-06 16:46:00
77阅读
2评论
分为几个模块 EventLoop、TcpServer、Acceptor、TcpConnection、Channel等 对于EventLoop来说: 他仅仅关注里面的主驱动力,EventLoop中仅仅关注poll,这类系统调用使得其成为Reactor模式,EventLoop中有属于这个loop的全部C
转载 2016-03-09 16:38:00
46阅读
一. TcpServer分类:管理所有的TCP客户连接,TcpServer对于用户直接使用,直接控制由用户生活。用户只需要设置相应的回调函数(消息处理messageCallback)然后TcpServer::start()就可以。主要数据成员: boost::scoped_ptr<Accepter> acceptor_; 用来接受连接 std::map<string,Tc
转载 2015-09-21 08:59:00
87阅读
2评论
一. Reactor模式简单介绍 Reactor释义"反应堆",是一种事件驱动机制。和普通函数调用的不同之处在于:应用程序不是主动的调用某个API完毕处理。而是恰恰相反。Reactor逆置了事件处理流程,应用程序须要提供对应的接口并注冊到Reactor上,假设对应的时间发生,Reactor将主动调用
转载 2017-05-12 18:28:00
83阅读
2评论
首先是添加注释的源码: // Use of this source code is governed by a BSD-style license // that can be found in the License file. // // Author: Shuo Chen (chenshuo
原创 2021-03-17 15:58:00
92阅读
首先
原创 2022-09-21 15:42:53
88阅读
总结说的有的过大,算是对自己学习的一个总结。兴许会不断补充。   模型总结 muduo是基于非堵塞的IO和事件驱动的网络库。 muduo的总体结构时one loop per thread+threadpool,图例如以下: mainReactor和subReactor都是EventLoop,在mainReactor中接收连接。把建立后的连接分发到subReactor中。 作者開始在muduo
转载 2017-06-27 10:15:00
278阅读
2评论
muduo的线程模型为one loop per thread+thread pool模型,在前面一篇文章的末尾曾简单的提起过:https://blog.csdn.net/qq_41453285/article/details/105104845 本节以一个Sudoku Solver(数独求解)例子为例,回顾了并发网络服务程序的多种设计方案,并介绍了使用muduo网络库编写多线程服务器的两种最常用手法 在后面“muduo编程示例”相关文章会展现muduo在编写单线程并发网络服务程序方面的能力与便捷性。本文
原创 2021-08-28 15:55:15
538阅读
muduo的线程模型为one loop per thread+thread pool模型,在前面一篇文章的末尾曾简单的提起过:https://blog..net/qq_41453285/article/details/105104845
原创 2022-01-15 16:50:17
472阅读
nocopyable//以前的那种是语言级别的,这个是编译器级别的#program once/*原理:派生类的拷贝构造和赋值,肯定要先调用基类的拷贝构造跟赋值采用这种方式,可以让派生类直接无法拷贝构造跟赋值为什么不在子类里面自己delete呢?优雅呗哈哈哈*///作为一个没有拷贝构造函数的基类class nocopyable{public: nocopyable(const nocopyable&) = delete; void operator=(c
原创 2021-09-05 11:40:47
3801阅读
nocopyable Logger Timestamp InetAddr
原创 2022-01-15 17:17:35
114阅读
Acceptor类用于创建套接字,设置套接字选项,调用listen函数,接受连接,然后调用TcpServer的回调。// Copyright 2010, Shuo Chen. All rights reserved.// http://code.google.com/p/muduo///// Use of this source code is governed b...
原创 2021-06-01 13:13:41
253阅读
LogStream.h// Use of this source code is governed by a BSD-style license// that can be found in the License file.//// Author: Shuo Chen (chenshuo at chenshuo dot com)#ifndef MUDUO_BAS...
原创 2021-06-01 13:13:56
395阅读
muduo中的单例模式Singleton.h// Use of this source code is governed by a BSD-style license// that can be found in the License file.//// Author: Shuo Chen (chenshuo at chenshuo dot com)#ifn...
原创 2021-06-01 13:13:59
377阅读
muduo中的线程池。ThreadPool.h// Use of this source code is governed by a BSD-style license// that can be found in the License file.//// Author: Shuo Chen (chenshuo at chenshuo dot com)#if...
原创 2021-06-01 13:14:01
468阅读
EventLoopThreadPool是IO线程对应的线程池,通过调用start函数来new EventLoopThread创建对应的线程和其loop,并将创建的保存在vector中。创建TcpConnection时,就会从EventLoopThreadPool中获取一个IO线程。EventLoopThreadPool.h// Copyright 2010, Shuo...
原创 2021-06-01 13:14:10
499阅读
muduo用EventLoopThread提供了对应eventloop和thread的封装,意为I/O线程类,EventLoopThread可以创建一个IO线程,通过startLoop返回一个IO线程的loop,threadFunc中开启loop循环,其中的API涉及一些多线程中的互斥量和条件变量的操作。EventLoopThread.h// Copyright 201...
原创 2021-06-01 13:14:11
241阅读
muduo用TcpClient发起连接,TcpClient有一个Connector连接器,TCPClient使用Conneccor发起连接, 连接建立成功后, 用socket创建TcpConnection来管理连接, 每个TcpClient class只管理一个TcpConnecction,连接建立成功后设置相应的回调函数。很显然,TcpClient用来管理客户端连接,真正连接...
原创 2021-06-01 13:14:12
782阅读
  • 1
  • 2
  • 3
  • 4
  • 5