muduo/base
muduo/base 目录是一些基础库,都是用户可见的类,内容包括:
–base/
- Asynclogging.{h,cc} 异步日志backend
- Atomic.h 原子操作
- BLockingQueue.h 无界阻塞队列
- BoundBLockingQueue.h 有界阻塞队列
- Condition.h 条件变量,与Mutex.h一同使用
- CountDownLatch.{h,cc}
- Threadpool. {h,cc} 简单的线程池大小
- threadlocal.h 线程局部数据
- THread.{h,cc} 线程对象
- doc
muduo/net
–net/
- acceptor.{h,cc} 接收器,用于服务端接受连接
- Buffer.{h,cc} 缓冲区,非阻塞IO必备
- Callbacks.h
- endian.h 网络字节序和主机字节序转换
- EventLoop.{h,cc} 事件分发器
- eventLoopThread.{h,cc} 新建一个专门用于EventLoop的线程
- EventLoopThreadPool.{h,cc} muduo默认多线程IO模型
- TcpConnection.{h,cc}
- doc
线程模型
one loop per thread + threadpool
threadpool 分两种,一种用来计算,一种用来做io线程.
eventloop
这个类用来调用poll或者epoll_wait,用于监听事件,然后调用每个描述符的channel
channel
channel 是Reactor关键结构,每个channel对应一个fd,只属于一个IO线程,负责这个fd 的事件分发,可以给这个fd的读写事件注册回调函数.
poller
##