Muduo网络库源码分析
文章平均质量分 80
学习 muduo 网络库过程中的总结,分享出来,一块交流。
Tanswer_
纸上得来终觉浅,绝知此事要躬行!
展开
-
eventfd 的分析与具体例子
eventfd 介绍Linux 2.6.27后添加了一个新的特性,就是eventfd,是用来实现多进程或多线程的之间的事件通知的。接口#include int eventfd(unsigned int initval, int flags);这个函数会创建一个事件对象(eventfd object),返回一个文件描述符,用来实现进程或线程间的等待/通知(wait/notify原创 2018-01-08 23:22:55 · 6640 阅读 · 1 评论 -
Muduo网络库源码分析之对socket及其相关操作的封装
主要涉及到的类和实现文件有:Endian.h 提供了字节序转换的函数。Socket.h/Socket.cc socketfd 的封装,提供了绑定地址、开始listen、接受连接等操作,并可设置套接字选项。InetAddress.h/InetAddress.cc 套接字地址的封装,提供了多种方式初始化一个地址,还提供方法从地址中拿到 ip 和 port。SocketsOps.h/原创 2018-01-09 15:14:11 · 1293 阅读 · 0 评论 -
Muduo网络库源码分析之Acceptor和TcpServer
Acceptor用于 accept 一个 TCP 连接,accept 接受成功后通知 TCP 连接的使用者。Acceptor 主要是供 TcpServer 使用的,其生命期由后者控制。一个 Acceptor 相当于持有服务端的一个 socket 描述符,该 socket 可以 accept 多个 TCP 客户连接,这个 accept 操作就是 Acceptor 实现的。这里用到了一些封装好原创 2018-01-12 22:43:03 · 1025 阅读 · 0 评论 -
Muduo网络库源码分析之TcpConnection Class
用于管理一个具体的 TCP 连接,比如消息的接收与发送,完成用户指定的连接回调 connectionCallback。TcpConnection 构造时接收参数有 TCP 连接的 sockfd,服务端地址 localAddr,客户端地址 peerAddr,并通过 Socket 封装 sockfd。并用 Channel 管理该 sockfd,向 Channel 注册可读、可写、关闭、出错回调函数原创 2018-01-17 15:04:45 · 876 阅读 · 0 评论 -
Muduo网络库源码分析之定时器的实现
muduo 的定时器功能由三个 class 实现,TimerId、Timer 和 TimerQueue。TimerId 类它唯一标识一个 Timer 定时器。TimerId Class 同时保存Timer* 和 sequence_,这个 sequence_ 是每个 Timer 对象有一个全局递增的序列号 int64_t sequence_,用原子计数器(AtomicInt64)生成。原创 2018-01-07 15:41:05 · 1267 阅读 · 0 评论 -
Muduo网络库源码分析之Reactor模式的关键结构
本文分析一下Reactor模式的实现,关键是三个类:Channel、Poller、EventLoop。事件分发类 ChannelChannel 是 selectable IO channel,负责注册与响应IO事件,包括注册给Poller的 fd 及其监听的事件,以及事件发生了所调的回调函数。 每个Channel对象自始至终只负责一个 fd 的事件分发,封装了一系列该 fd 对应的操原创 2018-01-06 18:36:02 · 1450 阅读 · 1 评论