![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
muduo
不爱练舞的死肥宅
热爱技术,记录自己的成长。
展开
-
对epoll的一点新认识
epoll原创 2021-05-29 17:12:17 · 118 阅读 · 0 评论 -
condition类的设计——muduo源码分析
muduo封装的条件变量,直接使用了Mutex.h依然是RAII的设计,注意在使用wait()的时候要while循环。pthread_cond_signal在多处理器上可能同时唤醒多个线程,当你只能让一个线程处理某个任务时,其它被唤醒的线程就需要继续wait,,而且规范要求pthread_cond_signal至少唤醒一个pthread_cond_wait上的线程,其实有些实现为了简单在单处理器上也会唤醒多个线程。pthread_cond_broadcast唤醒全部线程,但我们通常只需要一部分线程去原创 2021-05-27 23:03:58 · 150 阅读 · 0 评论 -
mutex的设计——muduo源码分析
mutex原创 2021-05-26 19:57:51 · 137 阅读 · 0 评论 -
记录几个工具
记录几个工具原创 2021-05-25 19:55:06 · 108 阅读 · 0 评论 -
异步唤醒机制——muduo源码分析
muduo异步唤醒机制原创 2021-05-24 21:17:43 · 538 阅读 · 2 评论 -
建立连接的过程——muduo源码分析
建立连接原创 2021-05-23 22:34:24 · 168 阅读 · 0 评论 -
EventLoopThreadPool类解析——muduo源码分析
创建了EventLoopThread线程池,然后把回调函数注册进去了。采用roundrobin的方式往里添加新的连接,如果线程池大小为0,则在baseloop回调。EventLoopThreadPool.h#ifndef MUDUO_NET_EVENTLOOPTHREADPOOL_H#define MUDUO_NET_EVENTLOOPTHREADPOOL_H#include "muduo/base/noncopyable.h"#include "muduo/base/Types.h"#in原创 2021-05-22 11:33:03 · 105 阅读 · 0 评论 -
EventLoopThread类解析——muduo源码分析
我认为看源码的一个比较好的顺序:从.h里面看成员变量,看看这个类到底持有那些成员变量,再从.cc里面去看成员函数的作用,从构造和析构中去看懂哪些对象的生命周期归该类控制。但是muduo的EventLoopThread实现为自动销毁的。一般loop函数退出整个程序就退出了,所以muduo库的线程池就是启动时分配,并没有释放。所以线程结束一般来说就是整个程序结束。EventLoopThread在threadFunc中创建了栈上EventLoop loop,threadFunc在构造时与Thread绑定。E原创 2021-05-22 10:46:50 · 243 阅读 · 1 评论 -
EventLoop类解析——muduo源码分析
EventLoop会在构造函数中创建一个poller对象,创建一个TimerQueue和WakeUpChannel,WakeUpChannel仅用于存放eventfd,用于异步唤醒,调用DoPendingFunctors()。通过t_loopInThisThread保证one loop per thread。事件循环运行的核心步骤:1、清空activechannel2、调用poll返回activechannel3、处理activechannel中的事件4、doPendingFunctors()原创 2021-05-21 21:34:16 · 256 阅读 · 0 评论 -
Channel类解析——muduo源码分析
Channel是一个内部类,仅供整个网络内部使用,不暴露对外的接口。该类为的主要作用是管理文件描述符,但是它不拥有文件描述符,文件描述符的析构工作不由它管理。一个Channel只管理一个文件描述符。作用:管理一个文件描述符,其可读可写事件以及在pollfd中的位置index()。在处理事件之前会用weak_ptr检测对象是否存在#ifndef MUDUO_NET_CHANNEL_H#define MUDUO_NET_CHANNEL_H#include "muduo/base/noncopyable原创 2021-05-20 21:35:23 · 236 阅读 · 0 评论 -
TcpServer类解析——muduo源码分析
该Evenloop运行在主线程,仅用于监听客户端的建立连接请求,不负责监听TcpConnection。该EventloopThread不从EventloopThreadPool中取。TcpServer中有一个线程池,大小固定不支持动态扩容。#ifndef MUDUO_NET_TCPSERVER_H#define MUDUO_NET_TCPSERVER_H#include "muduo/base/Atomic.h"#include "muduo/base/Types.h"#include "mud原创 2021-05-20 20:36:06 · 221 阅读 · 0 评论 -
Acceptor类解析——muduo源码分析
注释都放在代码里了,Acceptor.h#ifndef MUDUO_NET_ACCEPTOR_H#define MUDUO_NET_ACCEPTOR_H#include <functional>#include "muduo/net/Channel.h"#include "muduo/net/Socket.h"namespace muduo{namespace net{class EventLoop; //前向声明,头文件不需要重复包含class InetAdd原创 2021-05-19 20:18:46 · 149 阅读 · 0 评论 -
20210518有感
有好久一段日子没有记录自己的学习。临近秋招给自己定个小目标:六月中旬之前,啃完muduo网络库net源码,每日打卡。原创 2021-05-18 23:34:25 · 73 阅读 · 0 评论