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网络库
中buffer的设计
1.为什么非阻塞网络编程中应用层buffer是必须的非阻塞I/O(在这里可以理解为非阻塞I/O加T/O复用)的核心思想就是避免将当前线程阻塞在I/O系统调用上,这样可以使我们的I/O线程只阻塞在I/O复用函数上(epoll_wait或poll,select)使其能够服务更多的连接socket那么如何才能做到这一点呢?这里我们就需要实现应用层的输入输出buffer(1)什么情况下用到outputbu
Shreck66
·
2020-07-04 08:32
linux服务端编程
网络I-O模型
linux
Muduo 网络库源码分析 之 关键技术点总结
最近又把
muduo网络库
仔细研究了一遍,收获良多。
NK_test
·
2020-07-04 07:46
Linux基础及编程
Muduo源码分析
Programming
int
the
Linux
environment
muduo网络库
学习笔记(10):定时器的实现
传统的Reactor通过控制select和poll的等待时间来实现定时,而现在在Linux中有了timerfd,我们可以用和处理IO事件相同的方式来处理定时,代码的一致性更好。为什么选择timerfd常见的定时函数有如下几种:sleepalarmusleepnanosleepclock_nanosleepgetitimer/setitimertimer_create/timer_settime/t
li27z
·
2020-07-04 06:19
muduo
Linux下多线程服务器Reactor模式总结(精华好文!!)
PS:述而不作,里面很大部分知识都是总结的陈硕(
muduo网络库
作者,《Linux多线程服务端编程》作者)论述,感谢陈硕前辈。
小师兄.
·
2020-07-04 02:29
14.
Linux学习
《Linux多线程服务端编程》—
muduo网络库
(1)
TCP网络编程本质论思维转换:把原来“主动调用recv(2)来接收数据,主动调用accept(2)来接受新连接,主动调用send(2)来发送数据”的思路转换为“注册一个收数据的回调,网络库收到数据会调用我,直接把数据提供给我,供我消费。注册一个接受连接的回调,网络库接受了新连接会回调我,直接把新连接对象传给我,供我使用。需要发送数据的时候,只管往连接中写,网络库会负责无阻塞地发送。”作者(陈硕)认
jiange_zh
·
2020-07-02 05:27
UNIX网络编程
服务器
C/C++
浅析
muduo网络库
之Poller在哪里调用——EventLoop
直接上代码voidEventLoop::loop(){while(!quit_){//调用pollpollReturnTime_=poller_->poll(kPollTimeMs,&activeChannels_);for(ChannelList::iteratorit=activeChannels_.begin();it!=activeChannels_.end();++it){current
谢昆明
·
2020-06-30 21:57
自己写的HTTP服务器与muduo库对比——找出代码中的不足
前言:在阅读
muduo网络库
源码之前,自己先写尝试写了一个HTTP服务器,写的时候尽量使用了最新的C++11和我所知道的比较好的网络模型,并且尝试将各种资源或者网络事件进行解藕,努力做到代码的复用,当时写完的时候
yw8355507
·
2020-06-30 11:08
网络编程学习
Linux(
muduo网络库
):18---muduo简介之(muduo库的由来、编译安装、目录结构、代码结构、线程模型)
一、由来2010年3月陈硕先生写了一篇《学之者生,用之者死——ACE历史与简评》(文章参阅:https://blog.csdn.net/Solstice/article/details/5364096),其中提到“我心目中理想的网络库”的样子:线程安全,原生支持多核多线程不考虑可移植性,不跨平台,只支持Linux,不支持Windows。·主要支持x86-64,兼顾IA32。(实际上muduo也可以
江南、董少
·
2020-06-28 22:23
Linux(muduo网络库)
muduo网络库
源码复现笔记(四):base库的Thread.h和CurrentThread.h
Muduo网络库
简介muduo是一个基于Reactor模式的现代C++网络库,作者陈硕。它采用非阻塞IO模型,基于事件驱动和回调,原生支持多核多线程,适合编写Linux服务端多线程网络应用程序。
liangximin2046
·
2020-06-27 13:12
muduo
c++
多线程
后端
linux
C++网络编程实战项目--Sinetlib网络库(1)——概述
暑假的时候我照着陈硕先生的
Muduo网络库
模仿了一个,学到了很多,但对很多细节不解,所以现在就想重新实现,同时也熟悉整个开发流程。在这里我将
silence1772
·
2020-06-26 10:03
网络
Muduo网络库
——EventLoopThreadPool、EventLoopThread、EventLoop浅析
文章目录EventLoopThreadPoolEventLoopThreadEventLoopmuduo的并发模型为oneloopperthread+threadpool。EventLoopThread是事件循环线程,包含一个Thread对象,一个EventLoop对象。在构造函数中,把EventLoopThread::threadFunc注册到Thread对象中(线程启动时会回调)。EventL
qq_43313035
·
2020-06-26 01:42
Muduo
详细muduo的使用(二)——安装与使用
安装的话可以百度搜索一下:
muduo网络库
使用手册这里进行一些简要的总结先贴一下muduo库github地址:https://github.com/chenshuo/muduo/0.下载安装包wgethttps
Come_code
·
2020-06-25 21:35
Muduo
大型网站架构演变过程、大并发服务器架构
大型网站架构演变过程、大并发服务器架构分类:
muduo网络库
2013-11-1412:392231人阅读评论(7)收藏举报大型网站架构大并发服务器架构大型网站架构演变过程:[Step1]webserver
liema2000
·
2020-06-24 04:36
Linux多线程服务器端编程
copy-on-write)多线程服务器的适用场合与常用编程模型单线程服务器的常用编程模型多线程服务器的常用编程模型分布式系统中使用TCP长连接通信C++多线程系统编程精要高效的多线程日志日志功能的需求多线程异步日志
muduo
angbao4913
·
2020-06-22 14:23
Mina主体逻辑流程
Mina也是一个oneloopperthread的Reactor框架,关于这部分的知识可以看看《
muduo网络库
》这本书,Mina的优化什么的我看的不是很仔细,而且很多看不懂。
wsrspirit
·
2020-06-22 07:57
Java
muduo网络库
Timestamp类
1Timestamp类主要的文件muduo/base/Timestamp.ccmuduo/base/Timestamp.hmuduo/base/copyable.hmuduo/base/Types.h其中Timestamp.cc和Timestamp.h是类的文件。copyable.h文件中包括的空类是一个标识类,表示继承该类的所有类都是可复制的,是值语义。Types.h文件主要使用了该文件中对st
readyao
·
2020-06-22 00:08
服务器编程
muduo网络库
Exception异常类
1Exception类Exception类包括两个文件:Exception.cc,Exception.h。1.1Exception.h#ifndefMUDUO_BASE_EXCEPTION_H#defineMUDUO_BASE_EXCEPTION_H#include#includenamespacemuduo{classException:publicstd::exception{public:e
readyao
·
2020-06-22 00:37
服务器编程
muduo网络库
AtomicIntegerT原子整数类
1原子性操作//原子自增操作type__sync_fetch_and_add(type*ptr,typevalue)//原子比较和交换(设置)操作type__sync_val_compare_and_swap(type*ptr,typeoldvaltypenewval)bool__sync_bool_compare_and_swap(type*ptr,typeoldvaltypenewval)//
readyao
·
2020-06-22 00:37
服务器编程
muduo网络库
编译安装
1下载地址https://share.weiyun.com/5h0iIOX2安装依赖$sudoapt-getinstallcmake$sudoapt-getinstalllibboost-dev$tarzxfmuduo-0.9.1-beta.tar.gz$cdmuduo/$./build.shcentos系统使用yuminstallboost-devel来安装libboost-dev库。3编译完的
readyao
·
2020-06-22 00:37
服务器编程
muduo网络库
源码复现笔记(二):base库的Atomic.h
Muduo网络库
简介muduo是一个基于Reactor模式的现代C++网络库,作者陈硕。它采用非阻塞IO模型,基于事件驱动和回调,原生支持多核多线程,适合编写Linux服务端多线程网络应用程序。
liangximin2046
·
2020-06-21 15:00
muduo
c++
网络
linux
web服务器
muduo网络库
的接口
P131muduo的头文件明确分为客户可见和客户不可见两类。以下是安装之后暴露的头文件和库文件。对于使用muduo库而言,只需要掌握5个关键类:Buffer.h、EventLoop.h、TcpClient.h、TcpServer.h、TcpConnection.h1.Buffer.h2.EventLoop.h3.TcpClient.h4.TcpServer.h5.TcpConnection.hTc
SongLiang
·
2020-04-06 18:13
浅析
muduo网络库
之唤醒EventLoop
别的不看,看代码EventLoop::EventLoop()wakeupFd_(createEventfd()),wakeupChannel_(newChannel(this,wakeupFd_)),{wakeupChannel_->setReadCallback(boost::bind(&EventLoop::handleRead,this));//wearealwaysreadingthewa
谢昆明
·
2020-04-05 01:07
muduo网络库
浅谈(一)
muduo网络库
浅谈(一)序言第一章muduo的关键结构classEventLoopclassChannelclassPoller番外定时任务classTimestampclassTimerclassTimerQueueclassEventLoop
tf1412216
·
2020-04-03 01:44
c++
浅析
muduo网络库
之updateChannel——谁在调用
看代码voidChannel::update(){addedToLoop_=true;loop_->updateChannel(this);}voidEventLoop::updateChannel(Channel*channel){assert(channel->ownerLoop()==this);assertInLoopThread();poller_->updateChannel(chan
谢昆明
·
2020-03-27 15:16
Linux(
muduo网络库
):14---C++多线程编程精要之(多线程与IO、用RAII包装文件描述符)
本文内容衔接于前一篇文章(线程的创建与销毁的守则):https://blog.csdn.net/qq_41453285/article/details/105047683一、多线程与IO本专栏只讨论同步IO,包括阻塞与非阻塞,不讨论异步IO(AIO)在进行多线程网络编程的时候,几个自然的问题是:如何处理IO?能否多个线程同时读写同一个socket文件描述符?(一般指TCPsocket)我们知道用多
江南、董少
·
2020-03-24 22:29
Linux(muduo网络库)
Linux(
muduo网络库
):13---C++多线程编程精要之(线程的创建与销毁的守则)
本文内容衔接于前一篇文章(C/C++系统库的线程安全性):https://blog.csdn.net/qq_41453285/article/details/105047602相关语法链接:pthread_create:https://blog.csdn.net/qq_41453285/article/details/89293532pthread_exit()、pthread_cancel()、
江南、董少
·
2020-03-24 21:54
Linux(muduo网络库)
Linux(
muduo网络库
):10---多线程服务器之(“多线程服务器的适用场合”的例释与答疑)
本文内容衔接于前一篇文章(单线程、多线程服务器的适用场合):https://blog.csdn.net/qq_41453285/article/details/105005052《多线程服务器的适用场合》一文登出后(https://blog.csdn.net/Solstice/article/details/5334243),有很多读者提出了质疑,本文对一些多线程服务器中的一些疑问进行解答。以下“
江南、董少
·
2020-03-21 22:15
Linux(muduo网络库)
Linux(
muduo网络库
):09---多线程服务器之(单线程、多线程服务器的适用场合)
本文内容衔接于前一篇文章(进程间通信只用TCP):https://blog.csdn.net/qq_41453285/article/details/104997453一、服务器开发概述“服务器开发”包罗万象,用一句话形容是:跑在多核机器上的Linux用户态的没有用户界面的长期运行(例如wget是不长期运行,httpd是长期运行的)的网络应用程序,通常是分布式系统的组成部件并发处理开发服务端程序的
江南、董少
·
2020-03-21 14:30
Linux(muduo网络库)
Linux(
muduo网络库
):08---多线程服务器之(进程间通信只用TCP)
本文内容衔接于前一篇文章(单线程服务器、多线程服务器的常用编程模型):https://blog.csdn.net/qq_41453285/article/details/104954338一、Linux下IPC、同步原语的种类Linux下进程间通信(IPC)的方式数不胜数,光《UNIX网络编程》列出的就有:匿名管道(pipe)、具名管道(FIFO)、POSIX消息队列、共享内存、信号(signal
江南、董少
·
2020-03-21 10:50
Linux(muduo网络库)
Linux(
muduo网络库
):07---多线程服务器之(单线程服务器、多线程服务器的常用编程模型)
一、进程与线程进程进程(process)”是操作里最重要的两个概念之一(另一个是文件),粗略地讲,一个进程是“内存中正在运行的程序”每个进程有自己独立的地址空间(addressspace),“在同一个进程”还是“不在同一个进程”是系统功能划分的重要决策点。《Erlang程序设计》[ERL]把“进程”比喻为“人”,我觉得十分精当,为我们提供了一个思考的框架每个人有自己的记忆(memory),人与人通
江南、董少
·
2020-03-21 09:18
Linux(muduo网络库)
Linux(
muduo网络库
):02---线程安全的对象生命期管理之(以智能指针替换原始指针:内含Observer模式、对象池(弱回调)等演示案例)
本文内容衔接于前一篇文章(多线程中对象的构造与析构):https://blog.csdn.net/qq_41453285/article/details/104720277一、线程安全的Observer有多难一个动态创建的对象是否还活着,光看指针是看不出来的(引用也一样看不出来):指针就是指向了一块内存,这块内存上的对象如果已经销毁,那么就根本不能访问(《C++编程规范》条款99)(就像free之
江南、董少
·
2020-03-13 17:46
Linux(muduo网络库)
浅析
muduo网络库
之定时任务EventLoop
上代码EventLoop::EventLoop()timerQueue_(newTimerQueue(this)),}EventLoop内置了一个定时器队列timerQueue_定时器任务TimerIdEventLoop::runAt(constTimestamp&time,constTimerCallback&cb){returntimerQueue_->addTimer(cb,time,0.0
谢昆明
·
2020-02-16 16:39
浅析
muduo网络库
之EventLoopThread
看头文件classEventLoopThread:boost::noncopyable{public:typedefboost::functionThreadInitCallback;EventLoopThread(constThreadInitCallback&cb=ThreadInitCallback(),conststring&name=string());~EventLoopThread(
谢昆明
·
2020-02-12 05:12
浅析
muduo网络库
之Poller
poll相关的有三个类关系如下:classPollerclassPollPoller:publicPollerclassEPollPoller:publicPollerpoll的作用等待事件发生,通知调用者intnumEvents=::epoll_wait(epollfd_,&*events_.begin(),static_cast(events_.size()),timeoutMs);接口一:T
谢昆明
·
2019-10-31 06:41
Muduo网络库
学习之Buffer读取与发送数据
Buffer存在的意义Buffer是Tcp网络编程中必不可少的东西。为什么必须要有要有Buffer。举个简单的例子,先说输出buffer,假如服务器要向客户端发送100KB数据,受到了某些因素的影响,一次性只能发送80KB,那剩余的20KB怎么办,总不可能把它丢掉吧。这时候Buffer的作用就出来了,它将缓存没发送完的20KB数据(把数据按时间顺序存好,有点像队列,先入先出),然后再次注册sock
段长风
·
2019-10-13 19:17
Muduo网络库
C++
muduo网络库
知识分享01 - Linux平台下
muduo网络库
源码编译安装
muduo网络库
是C++语言开发的一个非常优秀的网络库,作者陈硕,
muduo网络库
在多线程环境下性能非常高,该系列文章会分享一些muduo库源码的知识,包括它的线程池源码,TcpServer源码,
大秦坑王
·
2019-04-05 00:20
Muduo
muduo网络库
架构总结(系列)
出处:http://www.cnblogs.com/ailumiyana/目录
muduo网络库
简介
muduo网络库
模块组成Recator反应器EventLoop的两个组件TimerQueue定时器EventfdConnector
Alisa_xf
·
2019-03-30 07:36
muduo
Linux多线程服务端编程学习(三):非阻塞网络编程中应用层Buffer的必需性
本文的内容参照了陈硕先生的
muduo网络库
,本篇文章源码的地址为:https://github.com/freshman94/NetLib原因问题一:在非阻塞网络编程中,为什么要使用应用层发送缓冲区?
freshman94
·
2019-03-21 23:36
多线程网络编程
muduo学习笔记(六) 多线程的TcpServer
TcpServerEventLoopThreadPool线程池设计模式muduo中的使用连接的建立、消息、销毁on_connectionon_messageon_close简单透传服务实现@前言前面文章介绍了
muduo
艾露米婭娜
·
2019-03-20 11:00
一个基于C++11的定时器队列(timerfd,poll实现)
原来的muduo中TimerQueue是专为EventLoop提供定时功能的组件,我在笔记
muduo网络库
学习笔记(三)TimerQueue定时器队列中解读过muduo这块代码,现在反过来,EventL
艾露米婭娜
·
2019-01-24 11:00
muduo网络库
的安装和使用
一、安装依赖库#安装cmakesudoapt-getinstallcmake#安装boostsudoapt-getinstalllibboost-devlibboost-test-dev#三个非必须的依赖库:curl、c-aresDNS、GoogleProtobufsudoapt-getinstalllibcurl4-openssl-devlibc-ares-devsudoapt-getinsta
lx青萍之末
·
2018-12-20 19:37
muduo网络库
muduo网络库
架构总结
目录
muduo网络库
简介
muduo网络库
模块组成Recator反应器EventLoop的两个组件TimerQueue定时器EventfdConnector和Acceptor连接器和监听器AcceptorConnectorTcpConnectionTcpServer
艾露米婭娜
·
2018-12-08 14:00
muduo网络库
学习笔记(五) 链接器Connector与监听器Acceptor
目录
muduo网络库
学习笔记(五)链接器Connector与监听器AcceptorConnector系统函数connect处理非阻塞connect的步骤:Connetor时序图Acceptor系统函数acceptSocket
艾露米婭娜
·
2018-11-17 13:00
muduo网络库
学习笔记(四) 通过eventfd实现的事件通知机制
目录
muduo网络库
学习笔记(四)通过eventfd实现的事件通知机制eventfd的使用eventfd系统函数使用示例EventLoop对eventfd的封装工作时序runInLoop()queueInLoop
艾露米婭娜
·
2018-11-14 23:00
muduo网络库
学习笔记(三)TimerQueue定时器队列
目录
muduo网络库
学习笔记(三)TimerQueue定时器队列Linux中的时间函数timerfd简单使用介绍timerfd示例muduo中对timerfd的封装TimerQueue的结构.TimerTimer
艾露米婭娜
·
2018-11-11 18:00
[
Muduo网络库
源码分析] (11) base/Types.h_基本类型声明
基本类型声明功能:为网络库提供基本的类型知识点:stirng的三种实现方式:用途:可用与类型转换和string的高效使用代码及分析:Types.h#ifndefMUDUO_BASE_TYPES_H#defineMUDUO_BASE_TYPES_H#include#ifdefMUDUO_STD_STRING#include#else//!MUDUO_STD_STRING#include#includ
chudongfang2015
·
2017-08-01 14:07
Muduo网络库
Muduo网络库源码分析与实践
[
Muduo网络库
源码分析] (9) base/Thread.cc_h_CurrentThread_h线程对象
线程对象实现:实现Thread类、ThreadData结构体、CurrentThread命名空间功能:实现线程对象并实现当前线程信息存储知识点:__thread__thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是又不值得用全局变量保护的变量。__thread使用规则
chudongfang2015
·
2017-07-31 09:15
Muduo网络库
Muduo网络库源码分析与实践
[
Muduo网络库
源码分析] (8) base/StringPiece.h_字符串参数传递类型
字符串参数传递类型实现:StringPiece、StringArg类功能:实现字符串类型、字符串参数传递类型知识点:__type_traits对一个类型进行描述,从而对其运算速度进行优化reinterpret_cast其可以进行指针间的转换,并且其可以实现指针和整数的相互转换用途:可用于字符串传参,和其他字符串处理代码及分析:StringPiece.h//TakenfromPCREpcre_str
chudongfang2015
·
2017-07-31 09:46
Muduo网络库
Muduo网络库源码分析与实践
[
Muduo网络库
源码分析] (6) base/Mutex.h_互斥锁操作
互斥锁操作功能:封装对互斥锁的操作知识点:MCHECK()宏的实现#defineMCHECK(ret)({__typeof__(ret)errnum=(ret);\if(__builtin_expect(errnum!=0,0))\__assert_perror_fail(errnum,__FILE__,__LINE__,__func__);})线程与锁的对应关系用途:可用于多线程互斥锁的操作亮点
chudongfang2015
·
2017-07-31 09:32
Muduo网络库
Muduo网络库源码分析与实践
[
Muduo网络库
源码分析] (1) base/Atomic.h_原子操作与原子整数
原子操作与原子整数前言:C/C++中数值操作,如自加(n++)自减(n–-)及赋值(n=2)操作都不是原子操作,如果是多线程程序需要使用全局计数器,程序就需要使用锁或者互斥量,对于较高并发的程序,会造成一定的性能瓶颈。为了提高赋值操作的效率,gcc提供了一组api,通过汇编级别的代码来保证赋值类操作的原子性,相对于涉及到操作系统系统调用和应用层同步的锁和互斥量,这组api的效率要高很多。类名:mu
chudongfang2015
·
2017-07-31 09:27
Muduo网络库
Muduo网络库源码分析与实践
上一页
1
2
3
4
5
6
7
下一页
按字母分类:
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
其他