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
库的 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++程序设计
Muduo
网络库源码分析之对socket及其相关操作的封装
主要涉及到的类和实现文件有:Endian.h提供了字节序转换的函数。Socket.h/Socket.ccsocketfd的封装,提供了绑定地址、开始listen、接受连接等操作,并可设置套接字选项。InetAddress.h/InetAddress.cc套接字地址的封装,提供了多种方式初始化一个地址,还提供方法从地址中拿到ip和port。SocketsOps.h/SocketsOps.cc封装了s
Tanswer_
·
2020-08-14 16:51
Linux网络编程
Muduo网络库源码分析
muduo
socket
inetaddr
字节序转换
socket相关操作
Muduo
网络编程示例之九:简单的消息广播服务
Muduo
网络编程示例之九:简单的消息广播服务陈硕(giantchen_AT_gmail)Blog.csdn.net/Solsticet.sina.com.cn/giantchen这是《
Muduo
网络编程示例
陈硕
·
2020-08-14 16:42
muduo
Muduo
网络编程示例之一:五个简单 TCP 协议
陈硕(giantchen_AT_gmail)Blog.csdn.net/Solstice这是《
Muduo
网络编程示例》系列的第一篇文章。
陈硕
·
2020-08-14 16:42
muduo
c++
muduo
网络库学习之
muduo
_http 库涉及到的类
1、httprequest:requestline+header+body(header分为普通报头,请求报头与实体报头)header与body之间有一空行(CRLF)请求方法有:Get,Post,Head,Put,Delete等协议版本1.0、1.1常用请求头Accept:浏览器可接受的媒体(MIME)类型;Accept-Language:浏览器所希望的语言种类Accept-Encoding:浏
s1mba
·
2020-08-14 16:10
muduo网络库学习
muduo
网络库学习之
muduo
_inspect 库涉及到的类
muduo
inspect库通过HTTP方式为服务器提供监控接口,现在只实现进程相关信息的监控,通过成员ProcessInspector实现。
s1mba
·
2020-08-14 16:10
muduo网络库学习
muduo
网络库学习之EventLoop(四):EventLoopThread 类、EventLoopThreadPool 类
1、EventLoopThread(IO线程类)任何一个线程,只要创建并运行了EventLoop,都称之为IO线程IO线程不一定是主线程
muduo
并发模型oneloopperthread+threadpool
s1mba
·
2020-08-14 16:10
muduo网络库学习
muduo
网络库学习之Logger类、LogStream类、LogFile类封装中的知识点
一、Logger类、LogStream类1、日志作用开发过程中:调试错误更好的理解程序运行过程中:诊断系统故障并处理记录系统运行状态2、日志级别TRACE指出比DEBUG粒度更细的一些信息事件(开发过程中使用)DEBUG指出细粒度信息事件对调试应用程序是非常有帮助的。(开发过程中使用)INFO表明消息在粗粒度级别上突出强调应用程序的运行过程。WARN系统能正常运行,但可能会出现潜在错误的情形。ER
s1mba
·
2020-08-14 16:09
muduo网络库学习
初识
muduo
:实现一个echo服务器
muduo
是陈硕写的一个网络库。
PinkFriday
·
2020-08-14 16:44
网络编程
Muduo
网络库源码分析(五)Acceptor和TcpServer类
Endian.h:封装了字节序转换函数(全局函数,位于
muduo
::net::sockets名称空间中)。SocketsOps.h/SocketsOps.cc:封装了socket相关系统调用。
NK_test
·
2020-08-14 16:58
Linux基础及编程
Muduo源码分析
21.
muduo
学习笔记之net_Callback.{h&cc}
1.说明这个主要是回调函数类型声明吧这个文件没有类,主要是一些声明和类型定义分两个命名空间,
muduo
和net2.
muduo
命名空间1.声明usingstd::placeholders::_1;C++11
LvPartner
·
2020-08-14 16:44
muduo学习
muduo
网络库学习笔记(3):Thread类
muduo
网络库采用了基于对象的编程思想来封装线程类。类图如下:变量numCreated_表示创建的线程个数,类型为AtomicInt32,用到了我们上篇所说的原子性操作。
li27z
·
2020-08-14 16:37
muduo
muduo
网络库学习笔记(0):面向对象编程风格和基于对象编程风格的比较
我们通过对一个线程类的封装来比较这二者的不同。面向对象编程风格使用面向对象编程风格封装线程类,一般这么做:写一个Threadbaseclass,含有(纯)虚函数Thread::run(),然后应用程序派生一个derivedclass,覆写run()。程序里的每一种线程对应一个Thread的派生类。类图如下:代码如下:文件名:Thread.h--头文件#ifndef_THREAD_H_#define
li27z
·
2020-08-14 16:37
C/C++
muduo
muduo
网络库学习笔记(8):高效日志类的封装
muduo
日志类封装细节(1)日志消息有多种级别(level),如TRACE、DEBUG、INFO、WARN、ERROR、FATAL。日志的输出级别在运行时可调。
li27z
·
2020-08-14 16:37
muduo
muduo
网络库学习笔记(6):单例类(线程安全的)
muduo
用pthread_once实现了线程安全的Singleton。
li27z
·
2020-08-14 16:06
muduo
muduo
::Logging、LogStream分析
下面是Logging.h的源码namespace
muduo
{classTimeZone;//forwarddeclarationclassLogger{public:enumLogLevel//用来设置不同的日志级别
KangRoger
·
2020-08-14 16:30
muduo源码学习
muduo
::Thread类分析
在
muduo
/base/thread.{h,c
KangRoger
·
2020-08-14 16:30
muduo源码学习
19
muduo
_base库源码分析(十)
1.ThreadLocalSigleton类图每一个线程都有一个T类型的单例对象线程特定数据:(1)POD类型可以使用__thread(2)非POD类型使用pthread_key_create2.代码ThreadLocalSingleton.h//UseofthissourcecodeisgovernedbyaBSD-stylelicense//thatcanbefoundintheLicense
INGNIGHT
·
2020-08-14 16:19
muduo大并发服务器
29
muduo
_net库源码分析(五)
1.进程(线程)wait/notify(1)pipe(2)socketpair(3)eventfd,eventfd是一个比pipe更高效的线程间事件通知机制,一方面它比pipe少用一个filedescripor,节省了资源;另一方面,eventfd的缓冲区管理也简单得多,全部“buffer”只有定长8bytes,不像pipe那样可能有不定长的真正buffer。intcreateEventfd(){
INGNIGHT
·
2020-08-14 16:19
muduo大并发服务器
34
muduo
_net库源码分析(十)
//http://code.google.com/p/
muduo
/////UseofthissourcecodeisgovernedbyaBSD-stylelicense//thatcanbefoundintheLicensefile
INGNIGHT
·
2020-08-14 16:19
muduo大并发服务器
30
muduo
_net库源码分析(六)
1.EventThread(1)任何一个线程,只要创建并运行了EventLoop,都称之为IO线程(2)IO线程不一定是主线程(3)
muduo
并发模型oneloopperthread+threadpool
INGNIGHT
·
2020-08-14 16:19
muduo大并发服务器
11
muduo
_base库源码分析(二)
1.为什么需要原子性操作(1)x++;(2)从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址2.gcc原子性操作(1)原子自增操作type__sync_fetch_and_add(type*ptr,typevalue)(2)原子比较和交换(设置)操作type__sync_val_compare_and_swap(type*ptr,typeoldvaltypenewval)bo
INGNIGHT
·
2020-08-14 16:18
muduo大并发服务器
15
muduo
_base库源码分析(六)
////Author:ShuoChen(chenshuoatchenshuodotcom)#ifndef
MUDUO
_BASE_BOU
INGNIGHT
·
2020-08-14 16:18
muduo大并发服务器
Muduo
分析及总结(六)TcpConnection
一、类关系图首先看TcpConnection在整个
Muduo
结构中的关系,如下图TcpConnection是整个网络库的核心,封装一次Tcp连接,注意它不能发起连接。
奔跑的哇牛
·
2020-08-14 16:39
Muduo
Muduo源码阅读总结
muduo
库的事件框架
TCP网络编程本质TCP网络编程编程本质是处理三个半事件。1.连接建立:服务器accept(被动)接收连接,客户端connect(主动)发起连接。2.连接断开:主动断开(close、shutdown),被动断开(read返回0)3.消息到达:文件描述符可读4.消息发送完毕:这算半个事件。对于低流量的服务,可以不关心这个事件。这里的发送完毕是数据写入操作系统缓冲区,将由TCP协议栈法则数据的发送与重
FreeeLinux
·
2020-08-14 15:02
Muduo源码剖析
muduo源码剖析
muduo
一个简单echo服务器的分析
muduo
一个简单echo服务器的分析前两篇写
muduo
网络框架线程处理,这两篇通过一个小的echo服务器来完整说明这个网络事件处理的流程。
Shonm
·
2020-08-14 15:47
linux网络编程
网络编程
muduo
muduo
源码分析
muduo
源码分析——EventLoop
先简单说一下,因为我参考的是flamingo的代码,会和
muduo
有一点点出入,但是基本是差不多,因为前者是基于后者开发的,可能有一点点改动。
不安的前方
·
2020-08-14 15:21
c++网络编程
muduo
源码分析——Channel
本文简单分析
muduo
的Channel类,我在学习
muduo
的时候,因为一开始看的很晕,后来找了很多文章来学习,这个Channel有很多种叫法“事件分发器”,“I/O选择器”等,但我还是喜欢叫它通道,为什么呢
不安的前方
·
2020-08-14 15:49
c++网络编程
muduo
源码分析——TcpConnection
muduo
中的TcpConnection算是整个框架中的大头吧,因为每个客户端连接对应一个Channel和一个TcpConnection,而之前已经说了,Channel只是一个通道,那么对于客户端连接的各种处理
不安的前方
·
2020-08-14 15:49
c++网络编程
muduo
源码分析——EventLoopThreadPool和EventLoopThread
现在开始写EventLoop相关的类,我决定先写EventLoopThreadPool。因为从拥有的关系上来看,TcpServer拥有一个EventLoopThreadPool,然后EventLoopThreadPool拥有若干个EventLoopThread(由TcpServer初始化时决定)。至于是不是直接拥有EventLoop,我觉得吧,可以说拥有,也不好说,因为它并没有去操作这些Event
不安的前方
·
2020-08-14 15:49
c++网络编程
muduo
网络编程
muduo
源码分析——TcpServer和Acceptor
这篇文章用于分析
muduo
的TcpServer类和Acceptor类,原本打算将TcpConnection也放到这里一起聊的,但是那个太多啦,一篇文章太长会让人读的很不舒服把。
不安的前方
·
2020-08-14 15:49
c++网络编程
**10种大并发服务器设计方案与
muduo
库网络模型使用
常见并发服务器方案循环式/迭代式服务器:短链接缺点:无法充分利用多核CPU,不适合执行时间较长的服务并发式服务器:长连接(1)主进程负责监听client的连接请求(2)当连接建立后,新fork一个子进程与client通信适应场景:适用于执行时间比较长的服务prefork服务器(1)父进程进行listen,然后先fork出大量的子进程===>此时,父子进程都listen客户端的到来(2)当clien
guojawee
·
2020-08-14 15:59
Muduo库源码剖析
muduo
_base代码剖析之Socket API封装
一、Endian.h封装了字节序转换函数(全局函数,位于
muduo
::net::sockets命名空间中)namespace
muduo
{namespacenet{namespacesockets{主机字节序
guojawee
·
2020-08-14 15:28
Muduo库源码剖析
muduo
的windows下的编译
辗辗转转,最后基本上也就筛选出这么几个优质代码
muduo
leveldbtinyhttp随书代码和作者的开源GITH
weixin_30675967
·
2020-08-14 15:15
(14)
muduo
_base库源码分析:MutexLock类,MutexLockGuard类,Condition类
文章目录1.MutexLock类图,MutexLockGuard类图2.Mutex.h分析3.Mutex_test.cc分析4.测试1.MutexLock类图,MutexLockGuard类图MutexLock类图MutexLockGuard类图,此类更加常用,使用RAII技法封装MutexLock类与MutexLockGuard类的lock方法和unlock方法说明voidf(){mutex.l
简单生活,简单爱
·
2020-08-14 15:28
开源代码学习
(11)
muduo
_base库源码分析:原子性
文章目录1.为什么需要原子性操作2.Atomic.h代码分析3.原子性操作可以实现无锁队列4.
muduo
的编译选项5.Types.h的研究1.为什么需要原子性操作x++;(1)从内存中读x的值到寄存器中
简单生活,简单爱
·
2020-08-14 15:27
开源代码学习
(10)
muduo
_base库源码分析:Timestamp.cc和Timestamp.h
文章目录1.Timestamp.h的研究2.Timestamp.cc的研究2.相关测试代码1.Timestamp.h的研究Timestamp类图如下,参考下即可位置:
muduo
\base\Timestamp.h
简单生活,简单爱
·
2020-08-14 15:27
开源代码学习
(13)
muduo
_base库源码分析:Thread类实现
文章目录1.线程标识符2.Thread类图3.Thread类相关代码学习4.相关测试5.多线程多进程的死锁案例1.线程标识符Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中
简单生活,简单爱
·
2020-08-14 15:27
开源代码学习
(7)
muduo
介绍
文章目录1.
muduo
的介绍的总结2.
muduo
的安装的总结1.
muduo
的介绍的总结不支持UDP,只支持TCP。
简单生活,简单爱
·
2020-08-14 15:27
开源代码学习
(12)
muduo
_base库源码分析:Exception类实现
文章目录1.Exception类实现2.代码测试1.Exception类实现类图12\j
muduo
\
muduo
\base\Exception.cc//UseofthissourcecodeisgovernedbyaBSD-stylelicense
简单生活,简单爱
·
2020-08-14 15:27
开源代码学习
(第6章)
muduo
网络库
文章目录1.
muduo
2.线程模型3.TCP网络编程本质1.
muduo
muduo
是基于Reactor模式的网络库,核心是:事件循环EventLoop,用于相应计时器和IO事件
muduo
采用基于对象object-based
简单生活,简单爱
·
2020-08-14 15:27
开源代码学习
Muduo
日志系统
本文是笔者通过学习
Muduo
多线程网络程序开发库日志模块所做出的总结,文中大量引用了陈硕所著的《Linux多线程服务端编程:使用
muduo
C++网络库》以及luotuo44《
muduo
日志库学习》博客中的内容
要回杭州的李同学
·
2020-08-14 15:54
发布一个基于 Reactor 模式的 C++ 网络库
发布一个基于Reactor模式的C++网络库陈硕(giantchen_AT_gmail)Blog.csdn.net/Solstice2010Aug30本文主要介绍
muduo
网络库的使用。
陈硕
·
2020-08-14 15:48
muduo
c++
多线程
上一页
8
9
10
11
12
13
14
15
下一页
按字母分类:
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
其他