深入剖析muduo网络库
文章平均质量分 76
Danica~
这个作者很懒,什么都没留下…
展开
-
重写muduo网络库之调用流程的梳理
C++11重写muduo网络库,网络库的调用流程梳理,新用户的连接,连接后,读写事件的发生,连接的断开原创 2024-05-14 16:24:00 · 862 阅读 · 0 评论 -
重写muduo库之组件梳理
C++11手写muduo库,对各模块组件(成员变量)之间的关系及作用的梳理原创 2024-05-14 09:13:14 · 832 阅读 · 0 评论 -
重写muduo之TcpConnection
C++11重写muduo之 TcpConnection原创 2024-05-12 22:04:04 · 795 阅读 · 0 评论 -
重写muduo之Buffer
C++11手写muduo网络库中的buffer模块原创 2024-05-11 23:12:49 · 301 阅读 · 0 评论 -
重写muduo之TcpServer
C++11重写muduo的TcpServer模块原创 2024-05-11 10:21:55 · 365 阅读 · 1 评论 -
重写muduo之Acceptor模块
C++11重写muduo中的Acceptor模块原创 2024-05-09 17:09:03 · 827 阅读 · 0 评论 -
重写muduo之Thread、EventLoopThread、EventLoopThreadPool
C++11重写muduo网络库中的线程部分,包括Thread、EventLoopThread、EventLoopThreadPool原创 2024-05-08 22:14:30 · 513 阅读 · 0 评论 -
重写muduo之EventLoop模块
C++11手写muduo库中的EventLoop模块原创 2024-05-07 23:52:18 · 669 阅读 · 0 评论 -
重写muduo之获取线程tid代码
C++11重写muduo的获取线程tid部分的代码原创 2024-05-07 08:52:42 · 350 阅读 · 0 评论 -
重写muduo之EPollPoller
C++11手写muduo库的EPollPoller模块原创 2024-05-06 22:56:29 · 1014 阅读 · 0 评论 -
重写muduo之Poller抽象层
手写muduo库中的Poller模块,解耦Pollar与EPollPoller原创 2024-05-06 00:11:35 · 365 阅读 · 0 评论 -
手写muduo之Channel通道
手写muduo库Channel模块的核心组件原创 2024-05-05 22:15:09 · 1029 阅读 · 0 评论 -
手写muduo之InetAddress模块
重写muduo网络库中的InetAddress模块原创 2024-05-05 16:42:11 · 207 阅读 · 0 评论 -
手写muduo之CMake构建、noncopyable、Timestamp、Logger
手写开源muduo网络库中的noncopyable、Timestamp、Logger模块以及项目的CMake构建原创 2024-05-05 15:35:42 · 253 阅读 · 0 评论 -
muduo库的使用
muduo库使用的简单例子原创 2024-05-05 10:53:33 · 350 阅读 · 0 评论 -
select、poll、epoll优势和缺陷总结
在select/poll时代,服务器进程每次都把这100万个连接告诉操作系统(从用户态复制句柄数据结构到内核态),让操作系统内核去查询这些套接字上是否有事件发生,轮询完成后,再将句柄数据复制到用户态,让服务器应用程序轮询处理已发生的网络事件,这一过程资源消耗较大,因此,select/poll一般 只能处理几千的并发连接。同时,epoll_wait的效率也非常高,因为调用epoll_wait时,并没有向操作系统复制这100万个连接的句柄数据,内核也不需要去遍历全部的连接。B+树,磁盘IO消耗低,效率很高)。原创 2024-05-04 20:09:26 · 939 阅读 · 0 评论 -
Reactor模型详解
Reactor模型概述,工作原理,muduo库中的Multiple Reactors模型原创 2024-05-04 18:15:07 · 1347 阅读 · 2 评论 -
好的网络服务器设计
在这个多核时代,服务端网络编程如何选择线程模型呢?强大的nginx服务器采用了epoll+fork模型作为网络模块的架构设计,实现了简单好用的负载算法,使 各个fork网络进程不会忙的越忙、闲的越闲,并且通过引入一把乐观锁解决了该模型导致的服务器惊群现象,功能十分强大。epoll + fork不如epoll + pthread?非阻塞IO+IO复用+线程池。原创 2024-05-04 17:13:33 · 169 阅读 · 0 评论 -
Linux上的五种I/O模型
数据的未就绪到就绪调用了I/O复用接口,就绪以后根据具体的发生事件fd,进行相应的I/O接口的调用,好处是在一个线程里面,调用一个I/O复用接口,可以监听很多很多的套接字(高并发),而阻塞和非阻塞,一个线程只能处理一个,当多个套接字有数据可操作的话,I/O复用会给应用程序返回可读或者可写的socket列表,然后应用程序根据I/O复用返回的这些可读写事件的fd进行相应的读写操作。通过aio_read告诉内核,我应用进程的一个缓冲区、内核通知应用进程的信号,应用进程感兴趣的事件sockfd;原创 2024-05-04 16:22:23 · 1089 阅读 · 0 评论 -
I/O阻塞和非阻塞,同步和异步
阻塞,非阻塞,同步,异步描述的都是I/O的一些状态,一个典型的网络I/O包含2个阶段:数据准备(数据就绪)和数据读写,比如说recv,传一个sockfd,buf,buf的大小,数据就绪就是远端有没有数据过来,就是内核相应的sockfd对应的TCP接收缓冲区是否有数据可读,当sockfd,当I/O工作在阻塞模式下的话,当我们调用recv的时候,如果数据没有就绪,recv是会阻塞当前的线程的。原创 2024-05-04 14:53:27 · 743 阅读 · 0 评论