1. 说明
- 一个EventLoopThreadPool类,使用了EvevtLoop,EventLoopThread类
- 线程池类,muduo的线程池是固定几个线程
- noncopyable
2. 变量
-
类型定义
- ThreadInitCallback
-
EventLoop* baseLoop_;
- 与Acceptor所属EventLoop相同
-
string name_;
- 名字
-
bool started_;
- 是否开始,在start()函数中赋值为true
-
int numThreads_;
- 线程数量
-
int next_;
- 新连接到来时,所选择的EventLoop对象下标
-
std::vector<std::unique_ptr> threads_;
- IO线程列表
-
std::vector<EventLoop*> loops_;
- EventLoop列表
3. 函数
-
构造
- 变量初始化,没做其他的
-
析构
- 什么都没做,不用释放loop,这是一个栈变量,会自动释放
-
void setThreadNum(int numThreads)
- 如名,设置线程数量
-
void start(const ThreadInitCallback& cb = ThreadInitCallback());
- 启动线程池,创建若干线程并加入到threads_当中,若numThreads_==0说明只有一个EventLoop,在这个EventLoop进入事件循环之前,调用cb(baseLoop)
-
EventLoop* getNextLoop();
- 获得下一个loop事件,循环获得,代码很容易理解
-
EventLoop* getLoopForHash(size_t hashCode);
- 根据哈希值获得EventLoop对象,实际就是hasCode对loop的数量取余,获得选用的loop.
-
std::vector<EventLoop*> getAllLoops();
- 返回loops_
-
bool started() const
- 返回started_
-
const string& name() const
- 返回name_
muduo线程池解析
本文详细介绍了muduo库中的EventLoopThreadPool类,包括其核心组件EventLoop和EventLoopThread,阐述了线程池的固定线程数特性及noncopyable设计原则。解析了线程池的变量定义、关键函数作用,如设置线程数量、启动线程池、获取下一个EventLoop等,以及线程池的状态管理和连接分配策略。
303

被折叠的 条评论
为什么被折叠?



