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
C++模板之SFINAE技术
今天在阅读
muduo
库的源码时,里面有这样几行代码:templatestructhas_no_destroy{templatestaticchartest(typeof(&C::no_destroy))
FreeeLinux
·
2020-07-15 17:26
C/C++
ProtoBuf - Arena
1、概述最近看ProtocalBuffer的源码,初次见到这个库源自陈硕的
muduo
,便打算看一看,在此做一下记录。官网文档不能访问,只能凭借代码的自己理解,查看的源码版本为3.6.0。
weixin_30273931
·
2020-07-15 02:21
muduo
之BlockingQueue
BlockingQueue是
muduo
是无界队列,利用队列(deque)实现,向队列中加入和取出元素用互斥量和条件变量结合的方式来操作,就是一个线程同步的问题。
pan-ma
·
2020-07-14 15:37
muduo源码学习
evpp网络库代码分析(一)
本项目高度参考了
muduo
网络库(https://github
mkelehk
·
2020-07-14 14:27
TCP/IP网络
C/C++
evpp
c++14
3. Thread.h——封装thread
muduo
是这样做的:一个类,来封装需要执行的函数,并捕获线程创建时可能的错误。该类是一个struct,有一个构造函数用于初始化类中变量。有一个函数,用于在线程中被调用。
Myth52125
·
2020-07-14 03:04
time_wheel
time_wheel实际就是个时间轮定时器,时间轮定时器就不多解释了看下高性能服务编程那本书的时间轮定时器就ok了,
muduo
的时间轮只不过是时间轮定时器的可以说一部分吧,这里的一开始初始化定时器的一轮
qq_23542345
·
2020-07-13 09:04
muduo-c++日记
C/C++结构体成员偏移量获取
分析代码节选自
muduo
.以下代码通过offsetof获取sin_family在sockaddr_in6中的字段偏移量.static_assert(offsetof(sockaddr_in6,sin6_
aihe1907
·
2020-07-13 02:15
Muduo
网络库源码分析(三)线程间使用eventfd通信和EventLoop::runInLoop系列函数
先说第一点,线程(进程)间通信有很多种方式(pipe,socketpair),为什么这里选择eventfd?eventfd是一个比pipe更高效的线程间事件通知机制,一方面它比pipe少用一个filedescripor,节省了资源;另一方面,eventfd的缓冲区管理也简单得多,全部“buffer”只有定长8bytes,不像pipe那样可能有不定长的真正buffer。最重要的一点:当我们想要编写并
NK_test
·
2020-07-13 01:44
Linux基础及编程
Muduo源码分析
Muduo
之封装Mutex和Condition
必要的预备知识:Linux提供的进行同步原语解释1、RAII手法RAII(ResourceAcquisitionIsInitialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。RAII的一般做法:在对象构造时获取资源(互斥量上锁),接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源(互斥量解锁,刚好声明周
有时需要偏执狂
·
2020-07-12 01:30
Muduo源代码分析
muduo
网络库源码复现笔记(十三):base库的Logging.h
Muduo
网络库简介
muduo
是一个基于Reactor模式的现代C++网络库,作者陈硕。它采用非阻塞IO模型,基于事件驱动和回调,原生支持多核多线程,适合编写Linux服务端多线程网络应用程序。
liangximin2046
·
2020-07-11 20:10
muduo
c++
linux
后端
muduo
网络库
muduo
网络库
网络编程
muduo
库源码阅读之MutexLock、MutexLockGuard、Contidion、CountDownLatch分析
一、互斥锁封装:Mutex.hgithub地址:https://github.com/chenshuo/
muduo
/blob/master/
muduo
/base/Mutex.h1.1MutexLock类互斥量是线程同步常用的变量
X-Programer
·
2020-07-11 14:52
多线程
Muduo
库源码分析(5):互斥锁,条件变量类
互斥锁(
muduo
库简单的封装)将
muduo
库的线程id的操作去除的简单版本//出错处理#defineMCHECK(ret)({__typeof__(ret)errnum=(ret);assert(errnum
jacktangj
·
2020-07-11 09:32
Muduo
线程
muduo
muduo
源码学习笔记(1)
前言:对于
muduo
库,我觉得,光Linux多线程上提到的一些实现,还是不够的,在base/里面,还有/net里面提供了很多不错的实现,值得去学习,暑假算是看看
muduo
的百分之八十的源码,并对其进行了一次实现
梦花火
·
2020-07-11 08:41
C++
Unix网络编程
Muduo
安装
muduo
库可能出现的问题,及解决方案
如果你在github上下载好了
muduo
库的源码。
bingbangbingbang
·
2020-07-11 02:11
环境安装类
RAII手法封装的互斥器mutex和条件变量condition类
类前言概要原则宏定义部分互斥锁(Mutex)条件变量(Conditionvariable)倒计时(CountDownLatch)死锁调试小结RAII手法封装的互斥器mutex和条件变量condition类前言近来在学习陈硕老师的
muduo
weixin_30710457
·
2020-07-10 19:48
one loop per thread
muduo
中,oneloopperthread即一个线程中一个loop循环。
xupeng1644
·
2020-07-10 13:27
muduo
学习多线程同步之智能指针巧用
muduo
发明了一种技巧(不知道是不是业界常用的)用MutexLockGuard来保护智能指针shared_ptr,以此实现类似于读写锁的功能:shared_ptr>_data;1)当reader要获取
terryzhu
·
2020-07-10 05:58
编程
c++多线程系统编程精要2019-11-01
boolrunning=false;//全局标志voidthreadFunc(){while(running){//gettaskfromqueue}}voidstart(){
muduo
::Threadt
雪上霜
·
2020-07-09 21:05
以sudoku服务器分析基于
muduo
的multiReactor+业务线程池模型运行流程
前言在以sudoku服务器分析
muduo
的的multiReactor+业务线程池模型运行流程之前,我们首先要知道什么是multiReactor+业务线程池模型(这种模型又称为oneloopperthread
lovebasamessi
·
2020-07-09 19:47
muduo
基于
muduo
库编写的服务器运行时文件描述符的创建顺序分析
这里仅以单IO线程为例,会了单IO线程的,其实多IO线程的也很好分析。首先来看TcpServer类的数据成员:TcpServer类的构造函数:研究TcpServer的数据成员与构造函数可以清晰的看到各个文件描述符的创建顺序。这有助于我们对整个服务器运行的流程有着一个较为清晰的了解。首先我们以TcpServer工作在单线程为例。众所周知,0、1、2分别对应stdin、stdout、stderr在每个
lovebasamessi
·
2020-07-09 19:15
muduo
muduo
库是如何实现跨线程函数调用的
muduo
库的跨线程函数主要是通过EventLoop类的成员函数runInLoop函数实现的,还是以具体的例子来一步一步的说明吧!
lovebasamessi
·
2020-07-09 19:15
muduo
以基于Reactor模式的高并发EchoServer为例剖析
muduo
库框架
前言在讲解基于
muduo
库的高并发echo服务器之前,我们先来回顾一下我们一般编写基于Reactor模式的高并发服务器的基本流程。
lovebasamessi
·
2020-07-09 19:15
muduo
muduo
库Channel类剖析:从回调函数注册到函数执行流程全剖析
Channel通道类,它是
muduo
库负责注册读写事件的类,并保存了fd读写事件发生时调用的回调函数,那么它到底是如何实现对应事件发生时系统执行指定的回调函数的呢?
lovebasamessi
·
2020-07-09 19:15
muduo
四个 服务器设计模型(42)
五个简单TCP协议(
Muduo
Manual.pdfP50)
muduo
库网络模型使用示例(sudoku求解服务器
Muduo
Manual.pdfP35)reactor(一个IO线程)reactor+threadpool
laohan_
·
2020-07-09 18:54
Muduo
Library
Simple
accept (EMFILE错误)文件描述符用尽解决方案
对于用户而言,处理该请求的关键就是文件描述符,然而没有请求成功就不存在相应的文件描述符,这是一个麻烦的问题,下面借由
muduo
库(方法来源于libev)简单说明一下解决方案。
Clark_Sev
·
2020-07-09 10:22
C++
网络库
读写锁中写锁的饥饿问题
读写锁是个看上去很美的的抽象代码是程序员对这个世界的抽象过程,是的,好的代码就像语言,将各个组件之间的关系描述的一清二楚,而读写锁在其中就是一个很好的例子,正如开头的一句引用,这是个看上去很美的抽象,陈硕前辈在
muduo
一个划水的人
·
2020-07-09 09:49
操作系统
muduo
网络库(1):
muduo
库整体框架
〇、背景0.1、本文背景在学习陈硕《Linux多线程服务端编程:使用
muduo
C++网络库》
muduo
源代码的过程中,感觉代码架构较复杂:一是和boost相关的内容比较多,对现代C++编程理念不了解的人
李骁睿写技术的地方
·
2020-07-08 18:52
muduo
muduo
库日志架构
转载请说明出处!!!作者git地址:https://github.com/GavinPong一、架构概述:1、采用基于对象的设计:2、每条日志都采用申请一个logger临时对象,然后获取logger对象中的logStream类成员对象,调用logStream的LogStream-->FixBuffer;2、生成临时的logger对象,通过Logger对象获取到内部的LogStream对象,调用Lo
清风宏
·
2020-07-08 09:12
muduo库
VS2017调试
muduo
网络库
VS2017调试
muduo
网络库准备工作下载
muduo
源码配置linux环境VS打开工程开始调试待续准备工作下载
muduo
源码
muduo
的github地址:https://github.com/chenshuo
tranfirm
·
2020-07-08 07:51
浅谈一个好的网络库设计
业界比较有名气一点的开源网络库有两个,一个
muduo
,一个lievent。
huosiren44
·
2020-07-07 10:50
网络
Linux多线程服务器端编程:使用
muduo
C++网络库 读书笔记
1.需要注意:scoped_ptr/shared_ptr/weak_ptr都是值语意,要么是栈上对象,或是其他对象的直接数据成员,或是标准容器里的元素。几乎不会有下面这种用法:shared_ptr*pFoo=newshared_ptr(newFoo);还要注意,如果这几种智能指针是对象x的数据成员,而它的模板参数T是个incomplete类型,那么x的析构函数不能是默认的或内联的,必须在.cpp文
huanzai2
·
2020-07-07 10:46
网络模型
c++
muduo
网络库——简介:安装、目录结构
6.2安装#安装cmakesudoapt-getinstallcmake #安装boostsudoapt-getinstalllibboost-devlibboost-test-dev#三个非必须的依赖库:curl、c-aresDNS、GoogleProtobuf(安装之后cmake会自动多编译一些示例)sudoapt-getinstalllibcurl4-openssl-devlibc-ares
amoscykl
·
2020-07-07 03:17
moduo网络库
muduo
网络库——C++多线程系统编程精要
封装为
muduo
::Thread。4个:mutex的创建、销毁、加锁、解锁。封装为
muduo
::MutexLock。5个:条件变量的创建、销毁、等待、通知、广播。
amoscykl
·
2020-07-07 03:47
moduo网络库
muduo源码分析
Muduo
网络库整体架构与分阶段解析
文章目录
Muduo
网络库的Reactor模式整体框架说明分阶段解析
Muduo
是一个基于Reactor模式的C++网络库。
ZY-JIMMY
·
2020-07-07 01:35
C++程序设计
发布一个基于 Reactor 模式的 C++ 网络库
发布一个基于Reactor模式的C++网络库陈硕(giantchen_AT_gmail)Blog.csdn.net/Solstice2010Aug30本文主要介绍
muduo
网络库的使用。
陈硕
·
2020-07-07 00:51
muduo
c++
多线程
Linux 多线程服务器端编程:使用
muduo
C++ 网络库
目录一、线程同步精要互斥器mutex条件变量封装MutexLock、MutexLockGuard和Condition线程安全的Singleton实现mutex与shared_ptr的应用实例一、线程同步精要并发编程的两种基本模型:messagepassing和sharedmemory。线程同步的四项原则:尽量最低限度的共享对象,减少需要同步的场合。尽量避免对象暴露给其他线程,如果要暴露,优先考虑i
SimonxxSun
·
2020-07-07 00:49
多线程
Linux
muduo
网络库设计的总结摘要与分析
首先是设计的分析,有了设计才能根据设计编码:1、单线程编程模型采用"non-blockingIO+IOmultiplexing",即Reactor模型。基本结构是一个事件循环,以事件驱动和事件回调的方式实现业务逻辑。优点:可以用于读写socket,连接的建立,甚至DNS解析都可以用非阻塞方式进行,以提高并发度和吞吐量,利于IO密集的应用。缺点:事件回调函数是非阻塞的,对于涉及网络IO请求响应式协议
小黄的雷雷
·
2020-07-06 17:37
muduo网络库
Muduo
设计与实现之一:Buffer 类的设计
陈硕(giantchen_AT_gmail)Blog.csdn.net/Solsticet.sina.com.cn/giantchen
Muduo
全系列文章列表:http://blog.csdn.net/
陈硕
·
2020-07-06 15:23
muduo
buffer
vector
output
网络
socket
input
Muduo
网络编程示例之八:用 Timing wheel 踢掉空闲连接
Muduo
网络编程示例之八:Timingwheel踢掉空闲连接陈硕(giantchen_AT_gmail)Blog.csdn.net/Solsticet.sina.com.cn/giantchen这是《
陈硕
·
2020-07-06 15:23
muduo
网络
编程
timer
数据结构
buffer
server
《Linux多线程服务端编程:使用
muduo
C++网络库》学习笔记,★firecat推荐★
4.9多线程与forkfork()一般不能在多线程中调用,因为Linux的fork只克隆当前线程的threadofctrl,不克隆其他线程。即,fork之后子进程只有一个线程,其他线程都消失了。7.2文件传输如果客户端故意只发起连接,不接收数据,那么要么服务器进程的文件描述符耗尽,要么占用很多服务器内存,因为每个连接会建立缓冲区。解决方法是:1、限制服务器的最大并发连接数2、用timingwhee
libaineu2004
·
2020-07-06 15:19
网络基础知识Web/Net
一个
muduo
的简单实现
前篇大致介绍了一下
muduo
,这篇探讨一下大致的代码实现。
muduo
是基于反应堆reactor,且oneloopperthread模式的。
Shonm
·
2020-07-06 14:24
muduo
源码分析
《linux多线程服务端编程
muduo
网络库的使用》读后感
断断续续读完这本书(应该说是这本书前八章介绍网络库的部分),书的后面几章,实际上为了读懂前面某些内容时,也翻了不少,不过太多东西我还没有能力拿下。事先虽然已经大致读完两本UNP,但依然没能一鼓作气看完这本书。一是C++基础实在太差,很多东西都是递归的去学习(比如书中提到单例->线程安全的单例->DLC(doublelockcheck)提高性能)。二是虽然了解基本socket编程(毕竟UNP中都是e
NearXDU
·
2020-07-06 12:40
muduo和多线程学习
Muduo
网络编程之使用Timing wheel 踢掉空闲连接
这部分原理可以直接参考http://blog.csdn.net/solstice/article/details/6395098。本文记录自己的理解和部分代码注释。1.模拟轮盘通过boost::circular_buffer来模拟轮盘。简单学习了一下关于这个数据结构的内容。它有如下特性:1.支持随机访问2.固定容量3.插入元素超过容量时会对头部或者尾部元素弹出下面看一个简单示例:#include#
NearXDU
·
2020-07-06 12:40
muduo和多线程学习
Linux time时间概述
(一)前言说起time,一般有两种,一个是计时,一个是定时.最近学APUE看到时间和日期这部分,想起
muduo
书中的实现规则:1.计时使用gettimeofday(2)来获取当前时间原因在于比time有更好的精度
NearXDU
·
2020-07-06 12:40
UNIX环境高级编程
muduo
源码分析--数据发送
暂且已经明白在non-blocking+IOmultiplexing网络编程模型中应用层的buffer是必须的这个问题,看数据是怎么被发送的:对于应用程序而言,它只管生成数据,它不应该去关心到底数据是一次性发送还是分成几次发送,这些应该由网络库操心,程序只要调用TcpConnection::send()就行了,网络库会负责到底。网络库应该接管这剩余的20KB数据,把它保存在该TCPconnecti
鱼思故渊
·
2020-07-06 11:06
muduo源码分析
muduo源码分析
muduo
网络库的安装、编译和使用
原文:https://blog.csdn.net/amoscykl/article/details/83185400github项目地址https://github.com/chenshuo/
muduo
K²
·
2020-07-06 11:26
LINUX
C++
candidate expects 1 argument, 0 provided
ErrorMessagechunk.h:Inconstructor‘Chunk::Chunk(
muduo
::net::EventLoop*,const
muduo
::net::InetAddress&,const
muduo
your_own_name
·
2020-07-06 11:00
C++/STL
muduo
前站之观察者模式
作为设计模式之一,观察者模式有必要提前了解一下。what先来官方版:定义对象间一种一对多的依赖关系,当一个对象的状态发生改变的时候,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知。这种交互也叫发布-订阅。目标是通知的发布者,他发出通知的时候并不需要知道谁是他的观察者。(最后这一句话之后可能会有歧义出现,之后再讲。先记一下。)还是用例子解释比较简单一点。同一
闫++
·
2020-07-06 10:30
muduo
网络库源码解析 六
我们首先来回顾一下
muduo
的IO模型:oneloopperthread+IOmultiplexingeventloop是non-blocking网络编程的核心,而non-blocking几乎总是和IOmultiplexing
徐九五
·
2020-07-06 09:25
C++
学习
使用eventfd唤醒阻塞在select、poll、epoll的IO复用
还是以
muduo
为例:EventLoop中有两个成员变量与唤醒阻塞的IO复用有关,wakeupFd_与wakeupChannel_;classEventLoop:noncopyable{public:.
xupeng1644
·
2020-07-06 09:48
linux
muduo
上一页
10
11
12
13
14
15
16
17
下一页
按字母分类:
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
其他