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
为什么多线程读写 shared_ptr 要加锁?
giantchen_AT_gmail_DOT_com)2012-01-28最新版下载:http://chenshuo.googlecode.com/files/CppEngineering.pdf我在《Linux多线程服务端编程:使用
muduo
C
iteye_11790
·
2020-06-23 18:29
新书预告:《Linux 多线程服务端编程:使用
muduo
C++ 网络库》
看完了W.RichardStevens的传世经典《UNIX网络编程》,能照着例子用SocketsAPI编写echo服务,却仍然对稍微复杂一点的网络编程任务感到无从下手?书中示例代码把业务逻辑和Sockets调用混在一起,似乎不利于将来扩展?网络编程中的遇到一些具体问题该怎么办?例如程序在本机测试正常,放到网络运行上就经常出现数据收不全的情况?TCP协议真的有所谓的“粘包问题”吗?该如何设计打包拆包
iteye_11790
·
2020-06-23 18:29
关于为什么大家都说C++语言难
直到最近,阅读了《Linux多线程服务端编程——使用
muduo
C++网络库》这本书,获益良多,觉得有必要写点东西总结一些东西。
gyj0754
·
2020-06-23 12:11
libeasy网络框架简介
libeasy不同于其它的网络框架比如tbnet,
muduo
。tbnet,
muduo
等网络框架的目的就是向应用层暴露出简单的发包和收包的接口,让应用层从底层发包和收包的处理细节中解放出来,使得应用
快乐的霖霖
·
2020-06-22 21:52
分布式消息系统
Linux多线程服务器端编程
copy-on-write)多线程服务器的适用场合与常用编程模型单线程服务器的常用编程模型多线程服务器的常用编程模型分布式系统中使用TCP长连接通信C++多线程系统编程精要高效的多线程日志日志功能的需求多线程异步日志
muduo
angbao4913
·
2020-06-22 14:23
C++怎么实现线程安全
muduo
库学习笔记1-C++多线程系统编程网上都说这本书很适合初学者入门学习,我今天开始准备从头再来;第一章线程安全的对象管理对象的生与死不能由对象自身拥有的mutex(互斥器)来保护;如何避免对象析构时可能存在的
angbao4913
·
2020-06-22 14:52
Mina主体逻辑流程
Mina也是一个oneloopperthread的Reactor框架,关于这部分的知识可以看看《
muduo
网络库》这本书,Mina的优化什么的我看的不是很仔细,而且很多看不懂。
wsrspirit
·
2020-06-22 07:57
Java
各种碎片知识点
服务器开发:负载均衡之加权轮询算法负载均衡的那些算法们秒杀多线程面试题系列C++:C++11右值引用和move语义智力题n*n匹马和n赛道,求前k名问题
muduo
库
muduo
源码剖析GDB文章目录:【软件开发底层知识修炼
RaKiRaKiRa
·
2020-06-22 04:44
各种碎片知识
muduo
网络库Timestamp类
1Timestamp类主要的文件
muduo
/base/Timestamp.cc
muduo
/base/Timestamp.h
muduo
/base/copyable.h
muduo
/base/Types.h其中
readyao
·
2020-06-22 00:08
服务器编程
muduo
网络库Exception异常类
1.1Exception.h#ifndef
MUDUO
_BASE_EXCEPTION_H#define
MUDUO
_BASE_EXCEPTION_H#include#includenamespace
muduo
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
网络库编译安装
下载地址https://share.weiyun.com/5h0iIOX2安装依赖$sudoapt-getinstallcmake$sudoapt-getinstalllibboost-dev$tarzxf
muduo
readyao
·
2020-06-22 00:37
服务器编程
muduo
开源阅读笔记(一)
关键数据结构/关键字文件Mutex.h中:#defineMCHECK(ret)({__typeof__(ret)errnum=(ret);\if(__builtin_expect(errnum!=0,0))\__assert_perror_fail(errnum,__FILE__,__LINE__,__func__);})涉及到三个关键字:1.__typeof__(ret)获取ret的数据类型;2
跑着的程序员
·
2020-06-21 16:23
muduo
开源阅读笔记
muodu 开源阅读(二)
muduo
定时器分析
muduo
涉及定时器的类包括:TimerQueue,TimerId,Timer,Timestamp。
跑着的程序员
·
2020-06-21 16:23
muduo
网络库源码复现笔记(二):base库的Atomic.h
Muduo
网络库简介
muduo
是一个基于Reactor模式的现代C++网络库,作者陈硕。它采用非阻塞IO模型,基于事件驱动和回调,原生支持多核多线程,适合编写Linux服务端多线程网络应用程序。
liangximin2046
·
2020-06-21 15:00
muduo
c++
网络
linux
web服务器
日拾朝夕--11182017
这本书的精华,我想要从
muduo
库开源代码读代码开始,对照代码再读原文才能吸取它的精华。每日一得不时会想,为什么写这个系列,这段话表述得很
sophietyl
·
2020-04-11 08:04
muduo
网络库的接口
P131
muduo
的头文件明确分为客户可见和客户不可见两类。以下是安装之后暴露的头文件和库文件。
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
一起来写web server 05 -- 多线程进阶版本
这个版本的webserver比第4版稍微做了一点改进,那就是由主线程统一接收连接,然后连接的处理由子线程来完成.因此,这里就引入了条件变量以及同步互斥的问题.同步机制
muduo
库中有一个关于同步机制的封装
Yihulee
·
2020-04-03 11:08
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网络库)
Muduo
_Day6(TcpConnection完善,发送数据以及shutdown)
TcpConnection发送数据之前我们的Channel仅仅用到了ReadCallback,而并没有启用WriteCallback,在本节中会设置为在需要时关注可写事件,在TcpConnection中添加如下:channel_->setWriteCallback(boost::bind(&TcpConnection::handleWrite,this));相应的添加接收缓冲区与发送缓冲区:Buf
angel_贝贝
·
2020-03-22 05:55
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网络库)
关于
muduo
库的调试
其实在windows下已经可以调试linux下的程序了。我老早就这么在干了,如果你要问我什么感觉,就一个字吧,爽。我这里稍微记录一下我是怎么来配置的吧,希望给小白一点指引。首先你肯定是要安装vs以及visualGDB,当然,要写的爽的话,少不了visualassistx这个插件。怎样使用visualGDB连接到linux自然不必我说,网上有一大票的教程,我要提示一下的是,你需要将visualGDB
Yihulee
·
2020-03-18 23:57
互联网捷径-书单
2016年读书笔记:《网络游戏核心技术与实战》《Go并发编程实战》《Docker进阶与实战》《深入理解ElasticSearch》《Linux多线程服务端编程;使用
muduo
C++网络库陈硕》《LinuxUNIX
亮gson
·
2020-03-15 11:46
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
2018-05-11 随笔
不是特别想用
muduo
库。还是不想使用boost,虽然effectivec++上面说了
linanwx
·
2020-02-02 08:06
Muduo
_Day8(
muduo
_http库)
http请求requestline+header+body(header分为普通报头,请求报头和实体报头)header与body之间有一空行(CRLF)requestline是由请求方法,url字段以及http协议版本字段三个部分组成,他们之间用空格分开http_request报文格式请求方法有:Get,Post,Head,Put,Delete等1.Get方法:当客户端要从服务器读取数据时,点击网
angel_贝贝
·
2019-12-24 14:40
Boost asio 1.69.0 随笔
C++的网络通信基于C++的网络库有不少比如
muduo
,libevent等。
Larry_kof
·
2019-12-07 06:19
Muduo
库设计(5)——TcpConnection和TcpServer
一、TcpConnection类TcpConnection类用于管理Acceptor类接收到的每条连接,每当Acceptor类接收到一个新的连接时就创建一个TcpConnection类每个TcpConnection类有一个唯一的name,每个TcpConnection对象创建时需要传入一个fd,并针对该fd创建一个Channel对象注意:TcpConnection表示的是一次Tcp连接,它是不可再
Magic11
·
2019-11-29 15:46
海边拾贝-F-第三方项目
第三方网站,不定期更新:陈浩个人博客:https://coolshell.cn/阮一峰个人博客:http://www.ruanyifeng.com/blog/2015/02/make.html陈硕的
muduo
He_LiangLiang
·
2019-11-12 19:00
浅析
muduo
网络库之Poller
poll相关的有三个类关系如下:classPollerclassPollPoller:publicPollerclassEPollPoller:publicPollerpoll的作用等待事件发生,通知调用者intnumEvents=::epoll_wait(epollfd_,&*events_.begin(),static_cast(events_.size()),timeoutMs);接口一:T
谢昆明
·
2019-10-31 06:41
基于 C++ 11 实现的 Web 服务器
本人参照《Linux多线程服务端编程》,以及模仿该书使用的
muduo
,写了一个轻量的Web服务器。源码Github。代码中有比较详细的注释,可作为看《Linux多线程服务端编程》的辅助材料。
chenBright
·
2019-10-26 07:52
网络编程
linux编程
c++
Muduo
_Day1(前期准备)
大型网站架构演变过程1.web动静资源分离:动态请求:jsp,php等;动态请求应用服务器处理如:Tomacat静态请求:html,js,css等,静态请求由http服务器处理,如Nginx.2.负载均衡反向代理:使用代理服务器将请求发送给内部服务器,让代理服务器将请求均匀转发给多台内部web服务器之一,从而达到负载均衡的目的.标准代理方式是客户使用代理访问多个外部web服务器,而这种代理方式是多
angel_贝贝
·
2019-10-19 10:12
Muduo
网络库学习之Buffer读取与发送数据
Buffer存在的意义Buffer是Tcp网络编程中必不可少的东西。为什么必须要有要有Buffer。举个简单的例子,先说输出buffer,假如服务器要向客户端发送100KB数据,受到了某些因素的影响,一次性只能发送80KB,那剩余的20KB怎么办,总不可能把它丢掉吧。这时候Buffer的作用就出来了,它将缓存没发送完的20KB数据(把数据按时间顺序存好,有点像队列,先入先出),然后再次注册sock
段长风
·
2019-10-13 19:17
Muduo网络库
客户端压测server端计算qps以及不同延迟时间下响应数量所占百分比
将时间戳转为时间显示
[email protected]
://github.com/chenshuo/
muduo
/blob/master/examples/sudoku/percentile.h
INGNIGHT
·
2019-09-19 20:45
Linux网络编程
C++ noncopyable类
在
muduo
中,有一个noncopyable类,继承了该类的派生类不能被拷贝,只能被移动。涉及拷贝的函数有两个:拷贝构造函数和拷贝复制操作符。
chenBright
·
2019-09-16 00:00
c++
boost
36.
muduo
学习笔记之net_Buffer.{h&cc}
1.说明一个Buffer类非阻塞网络编程中应用层buffer是必须的,要让程序在write操作上不阻塞,网络库必须给每个tcpconnection配置outputbuffer.在TcpConnection中使用,有两个,分别是inputbuffer和outputbuffer,TcpConnection会从socket读取数据,然后写入inputbuffer,客户代码从inputbuffer读取数据
LvPartner
·
2019-08-21 10:00
muduo学习
muduo
架构分析
本文以了解总体的架构后,从每个类的责任以及功能入手,深入各个类的依赖关系,最终按照运行流程梳理,了解框架的运行机理.目前的目标:了解框架结构,各个类的职责,各个类的依赖关系,最终能够解释客户端一个连接到达后的运行流程如何管理文件描述符如何派发连接进行处理如何设计不同的事件响应函数poll/epoll如何介入到框架中后续目标:多线程的并发同步定时任务如何管理性能效果测试设计模式总结分析架构分析常见服
DDullahan
·
2019-08-19 16:59
网络编程
Linux
C/C++
muduo
源码阅读(四):Buffer的设计
Buffer设计
muduo
的图示:buffer的必要性
muduo
的IO模型采用的是阻塞式的,因此线程只能阻塞在seletc/poll/epoll_wait当中,而不能阻塞的write/read函数中,这么一来
Ideal Dragon
·
2019-06-24 21:10
muduo
Muduo
源码分析一: Poller类 + EpollPoller类详解
前言最近开始看陈硕大佬的
muduo
,在这里记下所学到的知识叭.第一次写关于阅读源代码的博客,可能更多的是通过注释的方式来解释作者的思路,如果有任何的疑问或意见,欢迎评论.正文Poller介绍eventloop
ciaiy
·
2019-06-02 19:01
Muduo源码
muduo
库解析之base/Atomic
类名:Atomic文件:base/Atomic.h作用:提供数值的类型的原子操作支持解析:Atomic为模板类,继承自noncopyable表示不允许复制。Atomic主要通过以下几个函数实现:__sync_val_compare_and_swap:读出旧值,旧值与存储值相同则写入__sync_fetch_and_add:先获取值,再自加__sync_lock_test_and_set:将valu
大胆@刁民
·
2019-05-29 22:02
linux
Muduo
分析及总结(二)Channel
Muduo
用户一般不直接使用Channel,而会使用更上层的封装,如TcpConnection。Channel的生命期由其ownercalss负责
奔跑的哇牛
·
2019-05-22 23:38
Muduo
Muduo源码阅读总结
上一页
13
14
15
16
17
18
19
20
下一页
按字母分类:
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
其他