E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Muduo
开源库
muduo
学习-总结篇
首先感谢原著陈硕大牛的奉献,使我对TCP网络编程加深认识,清楚了多线程编程模型及适用范围,现代C++资源管理,事件回调的用法;木铎是一个开源的tcp网络库,帮助我们实现底层TCP逻辑,我们只需关注业务逻辑的实现即可。保证数据有效完整的到达,客户端重连。里面用了现代c++linux新系统调用。Reator事件循环是核心,oneloopperthread模式,非阻塞+IO多路复用。阐述了几大部分:1多
小媛媛呦
·
2020-08-14 22:24
muduo
/base库学习笔记(4)-----MutexLock类
MutexLock类1构造函数和析构函数的实现构造函数的实现MutexLock():holder_(0){//进行加锁MCHECK(pthread_mutex_init(&mutex_,NULL));}析构函数的实现~MutexLock(){assert(holder_==0);//解锁MCHECK(pthread_mutex_destroy(&mutex_));}2普通成员函数的实现isLock
xiuxiu__deng
·
2020-08-14 22:31
muduo
muduo
/base库学习笔记(3)-----Thread类
Thread类1构造函数和析构函数Thread(ThreadFunc,conststring&name=string())构造函数的实现,其中name有默认值为空Thread::Thread(ThreadFuncfunc,conststring&n):started_(false),joined_(false),pthreadId_(0),tid_(0),func_(std::move(func)
xiuxiu__deng
·
2020-08-14 22:31
muduo
muduo
/net库(1)
1如果说你不用
muduo
的net库,让你用epoll监听,你会怎样写服务器?下面是我写的,为了让代码的逻辑更加清晰,我这里没有进行出错判断。
xiuxiu__deng
·
2020-08-14 22:59
muduo
muduo
--EventLoop处理线程安全的问题
这样一来会带来线程安全性方面的问题,
muduo
的解决方法不是加锁,而是把对TimeQueue的操作转移到IO线程来进行,EventLoop::runInLoop(constFunctor&cb)函数,参数
wuqiyi_71
·
2020-08-14 22:12
C++
linux
muduo
网络库net篇二:定时器
Timer、TimerId类Timer类主要成员数据:constTimerCallbackcallback_;//回调函数Timestampexpiration_;//定时器超时时间constdoubleinterval_;//定时器超时时间constboolrepeat_;//interval_>0constint64_tsequence_;//定时器IdTimer类提供定时器回调函数,管理定时
视此虽近_邈若山河
·
2020-08-14 22:34
muduo网络库
muduo
网络库base篇五:进程信息 文件 日志
进程信息获取/proc/seft文件夹各文件中数据参数及系统参数文件ReadSmallFile类读取文件数据到缓冲区mutex_;time_tstartOfPeriod_;time_tlastRoll_;time_tlastFlush_;boost::scoped_ptrfile_;conststaticintkRollPerSeconds_=60*60*24;//一天默认是线程安全的写文件(利用
视此虽近_邈若山河
·
2020-08-14 22:34
muduo网络库
muduo
网络库base篇一: 大纲
问题下,看到有人提到
muduo
。离职也快两周了,为了下份工作充充电,作为多年没撸过C++代码的渣渣,硬着头皮开启了膜拜大师之旅。
视此虽近_邈若山河
·
2020-08-14 22:33
muduo网络库
muduo
库如何支持多线程
EventLoopThread(IO线程类)EventLoopThreadPool(IO线程池类)IO线程池的功能是开启若干个IO线程,并让这些IO线程处于事件循环的状态图中的每个Reactor都属于一个线程,mainReactor关注的是acceptor,也就是监听套接字相关的事件,subReactor关注的是已连接套接字相关的事件。也就是说,每新到一个连接,就选择一个subReactor来处理
哆啦尼可夫
·
2020-08-14 22:59
muduo源码
muduo
基础库
muduo
是一个高质量的Reactor网络库,采用oneloopperthread+threadpool架构实现,代码简洁,逻辑清晰,是学习网络编程的很好的典范。
哆啦尼可夫
·
2020-08-14 22:28
muduo源码
muduo
网络库学习之EventLoop(一):事件循环类图简介
番外TCP网络编程本质TCP网络编程最本质是的处理三个半事件连接建立:服务器accept(被动)接受连接,客户端connect(主动)发起连接连接断开:主动断开(close、shutdown),被动断开(read返回0)消息到达:文件描述符可读消息发送完毕:这算半个。对于低流量的服务,可不必关心这个事件;这里的发送完毕是指数据写入操作系统缓冲区,将由TCP协议栈负责数据的发送与重传,不代表对方已经
哆啦尼可夫
·
2020-08-14 22:28
muduo源码
muduo
网络库:线程池的实现
muduo
ThreadPool类图:任务队列的实现用到了STL的deque容器deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器
月光骆驼
·
2020-08-14 21:28
muduo网络库
muduo
网络库:Reactor模型的介绍
首先我们先了解几个问题:多线程能提高并发度吗?如果指的是“并发连接数”,那么不能。假如单纯采用threadperconnection的模型,对于32位linux,一个进程的地址空间是4G,其中用户态能访问3G左右,而一个线程的默认栈大小为10M,心算可以得到,一个进程大约最多能同时启动300个线程左右,这远远低于基于事件单线程程序所能轻松达到的并发连接数(几千上万,甚至几万)。所谓“基于事件”,指
月光骆驼
·
2020-08-14 21:28
muduo网络库
muduo
网络库源码解析(8):EventLoopThreadPool与EventLoopThread
muduo
网络库源码解析(1):多线程异步日志库(上)
muduo
网络库源码解析(2):多线程异步日志库(中)
muduo
网络库源码解析(3):多线程异步日志库(下)
muduo
网络库源码解析(4):TimerQueue
一个划水的人
·
2020-08-14 21:18
muduo网络库源码解析
muduo
学习笔记---HttpServer_test.cc
先贴一下陈硕大佬的代码:HttpServer_test.cc:这个是server的顶层实现,主要的工作就是注册了一个回调函数,处理http的业务逻辑#include"
muduo
/net/http/HttpServer.h
板砖道人
·
2020-08-14 21:53
muduo学习
muduo
AsyncLogging 解析(异步日志)
异步日志原理需要了解其中使用的几个类使用方法
muduo
::detail::FixedBufferBuffer;std::vector>BufferVector;BufferVector::value_typeBufferPtr
WanJunCoder
·
2020-08-14 21:05
C++
Linux
muduo
LogStream解析
数字转字符串constchardigits[]="9876543210123456789";constchar*zero=digits+9;static_assert(sizeof(digits)==20,"wrongnumberofdigits");constchardigitsHex[]="0123456789ABCDEF";static_assert(sizeofdigitsHex==17,
WanJunCoder
·
2020-08-14 21:33
C++
muduo
库使用示例之聊天服务器(上)
本文代码存放在
muduo
\examples\asio\chat目录下聊天服务器示意图实现的功能:任何一个Client给Server发送消息后,Server都会将该消息回射给连接上来的所有Client
muduo
guojawee
·
2020-08-14 21:03
Muduo库源码剖析
muduo
_net代码剖析之连接器Connector
Connector用于client向server主动发起连接,并有自动重连的功能Connector只负责建立socket连接,不负责创建TcpCOnnection(下文中的TcpClient类实现TcpCOnnection的创建)Connector在非阻塞网络编程中,发起连接的基本方式是调用connect(2),当socket变得可写时表明连接建立完毕,其中要处理各种类型的错误,我们把它封装为Co
guojawee
·
2020-08-14 21:03
Muduo库源码剖析
muduo
_net代码剖析之TcpConnection
TcpConnection类可谓是
muduo
最核心也是最复杂的类,它的头文件和源文件一共有450多行,是
muduo
最大的类。
guojawee
·
2020-08-14 21:02
Muduo库源码剖析
muduo
_net代码剖析之Acceptor
Acceptor用于接收client的连接请求,建立连接1、Acceptor类简介类Acceptor主要功能socket、bind、listen,并调用注册的回调函数来处理新到的连接2、Acceptor连接建立/处理时序图1:当loop()函数监听到通道acceptChannel_有事件到来,即listen套接字可读时2:acceptChannel_->handleEvent()3:Accepto
guojawee
·
2020-08-14 21:02
Muduo库源码剖析
muduo
定时器的新理解
吐槽部分你以为你以为的就是你以为的么…今天重新看了一下
muduo
的定时器实现的源码部分,才发之前的理解是错,之前只是停留在
muduo
的定时器是timerfd是实现的,没有再去往下看,今天重新捡起来看了一下源码
吕白_
·
2020-08-14 21:32
muduo
源码学习
muduo
源码学习之Thread, EventLoopThread和 EventLoopThreadPool
文章目录功能ThreadclassThread.hThread.ccEventLoopThreadEventLoopThread.hEventLoopThread.ccEventLoopThreadPoolEventLoopThreadPool.hEventLoopThreadPool.cc本来没想看这一块,但是看TCPServerclass的时候里面用到了,所以先总结一下这两个类的封装功能这三个
吕白_
·
2020-08-14 21:31
muduo
源码学习
muduo
源码学习总结
muduo
库介绍与安装
原生支持多核多线程不考虑移植性,不跨平台,只支持Linux,不支持Windows主要支持x86-64,兼顾IA32不支持UDP,只支持TCP不支持IPv6,只支持IPv4不考虑广域网应用,只考虑局域网(实际上
muduo
guojawee
·
2020-08-14 21:31
Muduo库源码剖析
muduo
源码学习之EventLoop::runInLoop函数和eventfd
runInLoop函数功能eventfd的使用创建eventfd示例代码EventLoop::runInLoop源码分析如何使用该功能EventLoop::runInLoop函数功能在上一篇博客介绍了
muduo
吕白_
·
2020-08-14 21:31
muduo
源码学习
muduo
源码学习总结
Reactor模式解析——
muduo
网络库
最近一段时间阅读了
muduo
源码,读完的感受有一个感受就是有点乱。当然不是说代码乱,是我可能还没有完全消化和理解。为了更好的学习这个库,还是要来写一些东西促进一下。
weixin_34389926
·
2020-08-14 21:22
muduo
与 libevent2 吞吐量对照
libevent是一款很好用的C语言网络库,它也採用Reactor模型,正好能够与
muduo
做一对照。
weixin_34008933
·
2020-08-14 20:08
muduo
用法
CMakeFiles/ttcp_blocking.dir/common.cc.o:Infunction`parseCommandLine(int,char**,Options*)':/root/workspace/
muduo
-master
weixin_33850890
·
2020-08-14 20:20
muduo
学习笔记(六) 多线程的TcpServer
目录前言多线程TcpServerEventLoopThreadPool线程池设计模式
muduo
中的使用连接的建立、消息、销毁on_connectionon_messageon_close简单透传服务实现
weixin_30917213
·
2020-08-14 20:29
【
Muduo
库】【base】基本类
一、Timestamp类1、类图如下:2、知识点(1)这个类继承了
muduo
::copyable,以及boost::less_than_comparable.(2)boost::less_than_comparable
weixin_30872867
·
2020-08-14 20:25
muduo
网络库第一个例子echo的编译
1.下载moduo网络库https://github.com/chenshuo/
muduo
2.解压方式一:把文件解压到当前目录下unziptest.zip方式二:如果要把文件解压到指定的目录下,需要用到
weixin_30711917
·
2020-08-14 20:41
muduo
网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录
muduo
网络库学习笔记(五)链接器Connector与监听器AcceptorConnector系统函数connect处理非阻塞connect的步骤:Connetor时序图Acceptor系统函数acceptSocket
335046781
·
2020-08-14 20:13
Muduo
学习笔记(一) 什么都不做的EventLoop
Muduo
学习笔记(一)什么都不做的EventLoopEventLoopEventLoop的基本接口包括构造、析构、loop()。
weixin_30399055
·
2020-08-14 20:43
muduo
学习笔记-Acceptor类
Acceptor类一般由TCPServer创建,负责处理客户端发送的connect,它拥有一个acceptSocket_和acceptChannel_成员。1、创建Acceptor:TcpServer::TcpServer(EventLoop*loop,constInetAddress&listenAddr,conststring&_name):loop_(CHECK_NOTNULL(loop))
weixin_30342209
·
2020-08-14 20:38
muduo
网络库的快速学习方法
muduo
是由陈硕开发的一个Linux多线程网络库,采用了很多新的Linux特性,项目代码量不到5000行,性能也不错。是难得的一个既能用来学习,也可以在实际生产环境中使用的网络库。
阿龙哥哥
·
2020-08-14 20:54
c++
muduo
学习
muduo
_base 源码分析:AtomicIntegerT
muduo
_base源码分析:AtomicIntegerT为什么需要原子性操作?
yjlongg
·
2020-08-14 20:01
网络编程
开源网络库的分析libevent
muduo
nginx ....
转自:http://blog.csdn.net/yusiguyuan/article/details/17340095每一个开源项目存在都有它的道理和意义,不同的思想有不同的优缺点。libevent:这是一个用纯C写的开源库,属于一个轻量级的网络中间件。其中用到的基本数据结构也是非常巧妙。展现反应堆模型的基本使用方法。不同的事件对应不容的处理方法。I/O定时信号。三种事件的处理单独分开,又通过事件
acmdream
·
2020-08-14 20:08
开源库
muduo
网络库的编译和使用
项目地址:https://github.com/chenshuo/
muduo
/安装CMake$sudoapt-getinstallcmake安装boost$sudoapt-getinstalllibboostxxx-dev
涵涵YH
·
2020-08-14 20:33
Linux
C++
Muduo
:EventLoop“循环”什么?
涉及的类:EPollPollerEventLoopChannelTimeQueue其中错误,欢迎指出!关系EventLoop类会指派其成员变量poller_监听3种类型的事件,一种是由Channel类描述的读写事件,一种是TimeQueue类描述的定时事件(然而也是通过Channel来注册到poller上),还有一种则是自身线程唤醒事件。你问EPollPoller类是干啥的?poller_变量则是
hqwuu
·
2020-08-14 20:24
muduo
dirlt 的
muduo
笔记
dirlt的
muduo
笔记1
Muduo
http://code.google.com/p/
muduo
/.在分析
muduo
之前必须了解一下作者的想法:http://www.cnblogs.com/Solstice
terminator3
·
2020-08-14 19:57
functor
timer
callback
thread
buffer
sockets
muduo
网络库学习(九)日志类Logger和LogStream,将日志信息打印到屏幕
每一个成熟的项目都有大大小小的日志系统,在关键的地方打印日志信息,常用来跟踪程序运行,查找错误原因等,可以节省大量的debug时间
muduo
的日志信息有5个级别TRACE,细粒度最高的日志信息,打印的最详细
一个程序渣渣的小后院
·
2020-08-14 19:38
muduo源码学习
muduo网络库源码分析
muduo
网络库学习(四)事件驱动循环EventLoop
muduo
的设计采用高并发服务器框架中的oneloopperthread模式,即一个线程一个事件循环。
一个程序渣渣的小后院
·
2020-08-14 19:38
muduo源码学习
muduo网络库源码分析
muduo
库学习笔记一:编译安装
开发环境准备:使用Vm虚拟机,安装CentOSrelease6.5(Final)版本
muduo
库整个项目使用cmake编译,所以需要先安装cmake。使用yum安装,安装前确保配置了可用的yum源。
麻子来了
·
2020-08-14 19:00
moduo源码阅读笔记
muduo
库学习笔记九:base库之BlockingQueue
BlockingQueue类:使用条件变量实现的无界队列类图:其中:mutex_:互斥量notEmpty_:条件变量queue_:队列put:生产产品take:消费产品size:队列大小以生产者消费者模型来说明该类的使用:(这里假设队列是有界的,所有生产前需要判断队列是否已满)测试程序:#include#include#include#include#include#include#include
麻子来了
·
2020-08-14 19:00
moduo源码阅读笔记
学习
muduo
库(14)之eventloopthread类
UML:解释;这个类体现了
muduo
库的思想:每一个线程有且有一个eventloop对象。此类的功能也是,创建一个线程,并在线程的回调函数中创造一个eventloop对象。
请叫我少爷
·
2020-08-14 19:44
学习muduo库
学习
muduo
库(8)之线程本地存储类ThreadLocal
预备知识:intpthread_key_create(pthread_key_t*key,void(*destructor)(void*));第一个参数为指向一个键值的指针,第二个参数指明了一个destructor函数,如果绑定的函数不为空,那么当每个线程结束时,系统将调用这个函数来释放绑定在这个键上的内存块。key一旦被创建,所有线程都可以访问它,但各线程可根据自己的需要往key中填入不同的值,
请叫我少爷
·
2020-08-14 19:44
学习muduo库
[evpp/
muduo
/reactor] evpp事件驱动网络库 整体架构梳理 2
序上一篇博文中,我们从用户使用的角度入手,对evpp中TCPServer、TCPClient两大类进行了梳理。接下来,我们再来分析梳理下Listener、Connector两个类的细节。当然,这让我联想起了杨宗纬的那首歌“如果你愿意一层一层一层地剥开我的心,你会发现你会讶异…”。扯得有点远,让我们进入正题。ListenerListener正如其名,主要是封装和TCPServerAccept连接相关
sai_j
·
2020-08-14 19:03
c++
linux
muduo
库分析——net篇(5)Tcp
已经总结了,TcpServer是一个控制器,维护了一个TcpConnection列表和一个AcceptorAcceptor作用是建立一个监听套接字,用来接受新的连接,并调用相关回调函数TcpConnection是拥有Socket和Channel两个成员,Socket用于监听相关连接数据,Channel用于事件管理TcpServer还有一个EventLoopThreadPool成员,这是事件分发到其
烟雨任大
·
2020-08-14 19:51
c++
muduo
库分析——net篇(1)EventLoop
类图:可以看出大概的关系Channel负责注册删除和响应的IO事件,具有IO当前状态,持有相关的回调函数EventLoop具有事件循环能力,从Poller中不停的读取IO事件,反馈到Channel上,执行Channel的回调函数Poller持有Channel的map结构,形式为,其派生类会新增相关文件描述符集合(用于从系统调用中读取相关IO事件)EventLoop.cppwakeupChannel
烟雨任大
·
2020-08-14 19:51
c++
muduo
库分析——base篇(9)日志
首先是日志等级:
Muduo
中Logger是全局日志控制器,其调用过程如下Logger封装了impl资源类,Implement里面有stream对象,重载了size_tconvert(charbuf[],
烟雨任大
·
2020-08-14 19:51
c++
上一页
6
7
8
9
10
11
12
13
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他