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
网络库源码剖析系列
1.
muduo
源码剖析专栏注:此系列来自于专栏:https://blog.csdn.net/FreeeLinux/column/info/13805
muduo
库的Socket封装
muduo
库的Acceptor
Baymax_yan
·
2020-08-14 19:06
muduo
【
muduo
】base库之 BlockingQueue和BounderBlockingQueue
生产者消费者模型一般有两种实现方式,可以利用信号量也可以利用条件变量实现,
muduo
库采用条件变量实现。
潇湘夜雨~
·
2020-08-14 18:25
muduo源码剖析
【
muduo
】base篇---ThreadPool
一、线程池简介1.线程池的概念:线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。2.线程池的工作机制2.1在线程池的编程模式下,任务是提交给整个线程池,而不是直接提交给某个线程,
潇湘夜雨~
·
2020-08-14 18:54
muduo源码剖析
多线程环境下的高效异步日志系统
https://github.com/chenlujiu/High-Performence-AsyncLogStream.git多线程双缓冲异步日志简介仿照了
MUDUO
的日志设计,在原有的基础上做了简化
CL_XYZ
·
2020-08-14 18:40
网络编程
muduo
-源码分析 1:基础概念准备
一网络模型-Reactor模式1.什么是reator模式Wikipedia上说:“Thereactordesignpatternisaneventhandlingpatternforhandlingservicerequestsdeliveredconcurrentlybyoneormoreinputs.Theservicehandlerthendemultiplexestheincomingre
扎扎实实写代码
·
2020-08-14 18:27
muduo源码分析
c/c++
linux网络编程
Muduo
库的框架剖析及总结(三)
我前面有说过把
Muduo
库分成大致四个模块,那么我们今天把Channel模块和Eventloop
兔子窝扛把子
·
2020-08-14 18:45
muduo
muduo
源码阅读(三):TcpServer
TcpServer功能:这是一个接口类,拥有一个管理监听套接字的类accptor,拥有一张具有多个管理连接套接字的TcpConnection类的映射表。它只是对这两个类进行管理,会设置它们的一些回调函数,监听端口,等,负责acceptor和TcpConnection两个类与用户交互的接口,而具体的调用实现还是由那两个具体的类去实现。比如连接到来时的调用函数,用户设置为onConnection,则接
Ideal Dragon
·
2020-08-14 18:08
muduo
muduo
源码剖析-接受数据和发送数据
1接受数据客户端与服务器建立连接,就有了一个TcpConnection对象,该TcpConnection对象包含客户端套接字文件描述符,对应的channel,以及所属的EventLoop对象。上述三个TcpConnection对象非常重要的数据成员,他们标识了这个TcpConnection对象的身份。TcpConnection对象还拥有inputBuffer_和outputBuffer_两个重要数
qingchengf
·
2020-08-14 18:34
muduo
库源码分析4——TcpServer线程池分析
TcpServer线程池分析
muduo
库支持线程池处理io功能。
q8250356
·
2020-08-14 18:30
c/c++开发
网络开发
muduo
的日志库分析一之LogStream
muduo
日志库是C++stream风格,这样用起来更自然,不必费心保持格式字符串和参数类型的一致性,可以随用随写,而且是类型安全的。
X-Programer
·
2020-08-14 18:29
muduo
muduo
的日志库分析三之LogFile类
LogFile类图LogFile类主要负责日志的滚动,日志滚动有两种条件,一种是日志文件大小达到预设值,另一种是时间到达超过当天。由几个成员变量来控制日志滚动。//基本的文件名,日志文件名由基本文件名和时间日期等元素构造conststringbasename_;//日志文件的极限容量,当日志文件的数据量达到这个限制之后就重新生成一个日志文件constsize_trollSize_;//刷新间隔co
X-Programer
·
2020-08-14 18:29
muduo
muduo
的日志库分析二之Logger类
github地址:https://github.com/chenshuo/
muduo
/blob/master/
muduo
/base/Logging.hhttps://github.com/chenshuo
X-Programer
·
2020-08-14 18:29
muduo
muduo
多线程异步日志分析
最近在看
muduo
的源码,对于其日志系统的实现颇为感兴趣,找了两三天好好研究了一下,本文记录一些所学到的知识。基础知识日志是每个高性能服务器必备的组件,分为两种:诊断日志和交易日志。
haha and giraffe
·
2020-08-14 18:22
Server
写一个makefile
muduo
project在/home/pei/Desktop目录结构大概是这样的,
muduo
/base/BlockingQueue.h
muduo
/base/test/BlockingQueue_test.cc
p2016
·
2020-08-14 18:38
C++
C++11 信号槽 signal/slot
此处应该@陈硕大大,《Linux多线程服务端编程:使用
muduo
C++网络库》。一、首先说一下shared_ptr的线程安全性,它的线程安全性级别和std::string是一样的。
p2016
·
2020-08-14 18:06
C++
多线程
学习
muduo
(框架的设计)
首先的话,以EventLoop为起点,它是一个事件循环,也是oneloopperthread的核心,建议先了解一下reactor模型。我们需要设计一个loop函数,利用它1.获得活动的事件2.执行对应事件的handle。不可避免的我们需要操作系统select,poll,epoll的支持,所以我们把他们封装一个抽象类Poller,问题1就解决了。怎么执行对应事件的handle?那么我们就可以把它包装
p2016
·
2020-08-14 18:35
muduo网络库
学习
muduo
(主要类的介绍)
三个半事件connectcallbackmessagecallbackwritecompletecallback(半个)closecallbackTcpServer有up_acceptor,sp_TcpconnectionPtr_Map,三个用户注册的回调connection、onMessage、writecompletecallback、加上两个重要的回调newConnection、remove
p2016
·
2020-08-14 18:35
muduo网络库
muduo
源码分析(四)一些有趣的设计
目录1.Buffer2.断开空闲连接2.1原理2.1.1自生自灭2.1.2临时续命2.1.3多个连接2.2实现2.2.1新连接到达2.2.2定时器超时2.2.3新消息到来参考文献1.Buffer
muduo
Julien_Lion
·
2020-08-14 18:07
muduo
使用C++11改造
muduo
上周拿到了订购的《Linux多线程服务端编程:使用
muduo
C++网络库》一书,花费一天时间浏览了一遍,并细读了其中感兴趣的一些章节。阅毕,决定用C++11改造其相应源码
muduo
。
企鹅
·
2020-08-14 18:32
linux网络
muduo
之Acceptor
//http://code.google.com/p/
muduo
/////UseofthissourcecodeisgovernedbyaBSD-stylelicense//thatcanbefou
pan-ma
·
2020-08-14 18:29
muduo源码学习
muduo
日志库学习(二)
上一篇文章讲到
muduo
日志库的基础部分,现在来讲
muduo
日志库的异步日志工作流程。
luotuo44
·
2020-08-14 17:39
muduo网络库
muduo
日志库学习(一)
muduo
的日志库由LogStream{.h,.cc}、Logging{.h,.cc}、LogFile{.h,.cc}、AsyncLogging{.h,.cc}组成。
luotuo44
·
2020-08-14 17:39
muduo网络库
muduo
cpp11版本编译安装
下载链接:https://github.com/chenshuo/
muduo
/tree/cpp11需要安装boost,curl,protobuf的相关依赖。
lsfreeing
·
2020-08-14 17:35
C++11
Linux
Network
and
Protocals
muduo
库源码学习(base):Logfile
本文件使用的是C++17版本#ifndef
MUDUO
_BASE_LOGFILE_H#define
MUDUO
_BASE_LOGFILE_H#include#include#includenamespace
muduo
lsaejn
·
2020-08-14 17:35
C++
muduo
muduo
库源码学习(base)Date
muduo
在时间上选择的是tm和timeSpecstructtm;namespace
muduo
{////DateinGregoriancalendar.
lsaejn
·
2020-08-14 17:34
muduo
C++
muduo
库源码学习(base)singleton
/*SFINAE的意思是这样的,假如有一个特化会导致编译时错误(即出现编译失败),只要还有别的选择可以被选择,那么就无视这个特化错误而去选择另外的可选选择。这个示例中,如果我们给传的参数T类型为POD类型,当调用detail::has_no_destroy::value时,T参数会在has_no_destroy类中实例化模板,由于是POD类型,不具备no_destroy方法,不可以使用&C::no
lsaejn
·
2020-08-14 17:34
C++
muduo
muduo
库源码学习(base)mutex
classMutexLock:boost::noncopyable//最常用的类.就是std::mutex,对应的还是lock_guard和unique_lock{public:MutexLock():holder_(0){MCHECK(pthread_mutex_init(&mutex_,NULL));}~MutexLock(){assert(holder_==0);MCHECK(pthread
lsaejn
·
2020-08-14 17:34
C++
muduo
muduo
库源码学习(base)ThreadLocal
////Author:ShuoChen(chenshuoatchenshuodotcom)#ifndef
MUDUO
_BASE_THREADLOCAL_H#define
MUDUO
_BASE_THREADLOCAL_H
lsaejn
·
2020-08-14 17:34
C++
muduo
muduo
_net库源码分析
Channel是selectableIOchannel,负责注册与响应IO事件,它不拥有filedescriptor。Channel是Acceptor、Connector、EventLoop、TimerQueue、TcpConnection的成员,生命期由后者控制。时序图EventLoop头文件eventloop.h[cpp]viewplaincopyprint?// Copyright 2010
李生龙
·
2020-08-14 17:43
moduo网络
linux并发网络编程相关
mudu库学习篇-mutex类封装学习
muduo
库是高并发的linux网络编程库,那么就一定有mutex对mutex类的封装,在多线程的编程中,线程间经常会操作一些全局变量,因此我们就需要一些同步的机制,我的上一篇博客condtion算是一种
Coldestmonth
·
2020-08-14 17:44
C++知识点
muduo库
muduo
库学习-日志模块的学习以及C++日志模块封装
一个好的日志库肯定是必不可少的,c++作为一门这么古老的开发语言,按理说应该有一些好用的日志库,但是在网上找到的那些日志库感觉用起来都不是很得心应手,因此就自己动手写了一个日志库,源码放在github上我自己写的这个日志是参考
muduo
Coldestmonth
·
2020-08-14 17:44
C++知识点
muduo库
muduo
源码分析:日志相关类(1)
1.stringPiece类:当字符串来用统一char*字符串和std::string。通过char*字符串或者string作参数传递字符串,形参为stringPiece类型,就不会有内存拷贝stringPiece只有两个变量constchar*ptr_;//字符串首地址intlength_;//字符串长度其实形参为constchar*也可以做到不拷贝内存,只是sting类型的实参传递时,要用st
le119126
·
2020-08-14 17:11
muduo
c++
linux
muduo
_net库源码分析(25)
TCP网络编程本质TCP网络编程最本质是的处理三个半事件连接建立:服务器accept(被动)接受连接,客户端connect(主动)发起连接连接断开:主动断开(close、shutdown),被动断开(read返回0)消息到达:文件描述符可读消息发送完毕:这算半个。对于低流量的服务,可不必关心这个事件;这里的发送完毕是指数据写入操作系统缓冲区,将由TCP协议栈负责数据的发送与重传,不代表对方已经接收
laohan_
·
2020-08-14 17:05
Muduo
Net
Library
muduo
源码学习笔记(2)
前言:对于
muduo
库,我觉得,光Linux多线程上提到的一些实现,还是不够的,在base/里面,还有/net里面提供了很多不错的实现,值得去学习,暑假算是看看
muduo
的百分之八十的源码,并对其进行了一次实现
梦花火
·
2020-08-14 17:24
C++
Muduo
muduo
学习笔记 日志类
learn_
muduo
LoggerLogger有六个日志等级TRACEDEBUGINFOWARNERRORFATAL日志的输出语句是通过宏定义完成,编译期完成宏定义替换,创建Logger的临时对象。
Sanzona
·
2020-08-14 17:26
muduo
【
Muduo
源码分析】
Muduo
源码分析系列总览
本系列主要是分析
Muduo
网络库的执行流程,让大家有一个大致的认识。网络库主要是完成对三个半事件的关注。
hello_ape
·
2020-08-14 17:53
Muduo
【
Muduo
源码分析】
muduo
的EventLoop 解读
Muduo
奉行的是每个oneloopperthread,意思是每个线程只有一个EventLoop对象。在
Muduo
中,称创建了EventLoop对象的线程是IO线程。
hello_ape
·
2020-08-14 17:53
Muduo
Muduo
Linux网络编程
muduo
库学习笔记-线程安全
muduo
库的线程安全问题什么是线程安全所谓线程安全是指凡是非共享的对象都是彼此独立的,如果一个对象从始至终只被一个线程用到,那么它就是安全的。
张火油
·
2020-08-14 17:48
muduo
网络库源码阅读Step by Step
Postedon:Nov262015Categories:
muduo
C++Tags:
muduo
一般写服务端程序都需要有一个称手的网络库来帮我们处理琐碎的网络通信细节,比如连接的建立、关闭,读取数据,发送数据
eyucham
·
2020-08-14 17:16
muduo
【
muduo
】net篇---Acceptor
Acceptor类是属于内部类。既然这个类是管理监听套接字的,那么这个监听套接字的生命周期就是由Acceptor类来管理。 Acceptor类主要负责监听连接请求,调用listen()接口时,通过Channel::enableReading()把socket的描述符加到poller(I/O复用器)中。当有新连接到达时,先调用系统函数accept(),再回调函数newConnectionCal
lx青萍之末
·
2020-08-14 17:15
#
Muduo网络库
【
muduo
】线程安全的对象生命期管理
文章目录一、当析构函数遇到多线程二、对象的创建很简单三、销毁太难四、原始指针有何不妥五、神器shared_ptr/weak_ptr1、shared_ptr的关键点2、shared_ptr的线程安全六、系统地避免各种指针错误七、shared_ptr技术与陷阱八、小结一、当析构函数遇到多线程 当一个对象能被多个线程同时看到时,那么对象的销毁时机就会变得模糊不清,可能出现多种竞态条件(racecond
lx青萍之末
·
2020-08-14 17:15
#
Muduo网络库
【
muduo
】net篇---TcpConnection
TcpConnection类主要负责封装一次TCP连接,向Channel类注册回调函数(可读、可写、可关闭、错误处理),将来当Channel类上的事件发生时,调用相应的回调函数进行数据收发或者错误处理。 TcpConnection是使用shared_ptr来管理的类,因为它的生命周期模糊。TcpConnection表示已经建立或正在建立的连接,建立连接后,用户只需要在上层类如TcpServe
lx青萍之末
·
2020-08-14 17:15
#
Muduo网络库
muduo
库的 poller 接口类和Channel分析
muduo
库内的timerfdeventfdsocketfd等文件描述符,一般注册读写事件一般通过以下流程:当一个fd想要注册可读事件时,首先通过Channel::enableReading()->Channel
YongApple
·
2020-08-14 16:31
muduo
muduo
-- eventloop分析
几个问题:1.currentActiveChannel_->handleEvent(pollReturnTime_);如果handleEvent内某个事件响应函数很慢或者卡住,岂不是会影响后续事件处理延迟,且影响该eventloopthread的poll执行。----------------------------------------------------------------------
YongApple
·
2020-08-14 16:00
muduo
muduo
-- eventloop分析1
几个问题:currentActiveChannel_->handleEvent(pollReturnTime_);如果handleEvent内某个事件响应函数很慢或者卡住,岂不是会影响后续事件处理延迟,且影响该eventloopthread的poll执行。常见虚基类接口,类似如下定义classICallBcak{public:virtualConnectCb();virtualReadCb();}
YongApple
·
2020-08-14 16:00
muduo
muduo
源码分析:TcpServer类
接下来,开始学习
muduo
对于建立连接的处理。这属于
muduo
提到的三个半事件中的第一个。可以想一下,TcpServerclass应该也是对Acceptor,Poller的封装。
amoscykl
·
2020-08-14 16:59
moduo网络库
muduo源码分析
muduo
网路库——高效的多线程日志
在服务端编程中,日志是必不可少的,通常用于故障诊断和追踪,也可用于性能分析。在生产环境中应该做到"LogEverythingAllTheTime"。一个日志库大体可分为前端(frontend)和后端(backend)两部分。前端是供应用程序使用的接口(API),并生成日志消息;后端则负责把日志消息写到目的地。在多线程程序中,每个线程有自己的前端,整个程序共用一个后端。对于C++程序而言,最好整个程
amoscykl
·
2020-08-14 16:59
moduo网络库
muduo源码分析
muduo
源码分析:EventLoop类 (核心)
4.EventLoop类的实现EventLoop类实现了reactor的基本模式,它的数据定义如下:voidabortNotInLoopThread();//不在主I/O线程voidhandleRead();//wakedup//将事件通知描述符里的内容读走,以便让其继续检测事件通知voiddoPendingFunctors();//执行转交给I/O的任务voidprintActiveChanne
amoscykl
·
2020-08-14 16:27
moduo网络库
muduo源码分析
Muduo
源码阅读
最近简单读了下
muduo
的源码,本文对其主要实现/结构简单总结下。
muduo
的主要源码位于net文件夹下,base文件夹是一些基础代码,不影响理解网络部分的实现。
Smith先生
·
2020-08-14 16:12
Muduo
网络库源码剖析 | 线程池 ThreadPool的设计与实现
Muduo
库的线程数目属于启动时配置,当线程池启动时,线程数目就已经固定下来。由于
Muduo
库是基于对象编程的设计理念,所以
Muduo
库的任务队列中存放的
ZY-JIMMY
·
2020-08-14 16:50
C++程序设计
上一页
15
16
17
18
19
20
21
22
下一页
按字母分类:
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
其他