这个貌似是个池,池里全是EventLoopThread。貌似很强大
这个类对外的接口也很简单
一个构造函数,需要传递的是EventLoop
一个设置个数的函数 setThreadNum,这个函数好像决定了开启几个EventLoopThread
一个start 从感觉上来看这个函数是按照numThreads_的数目来开启线程的,EventLoopThreadPool中有一个向量存放着E3ventLoopThread
还有一个getNextLoop函数
这个函数貌似是从EventLoopThread向量中获取合适的EventLoopThread的 。
但是可怕的是,构造函数需要传递给她的baseLoop_,谁会传递给它呢?还是来规矩,可能EventLoopThreadPool的拥有者传递给它!
它既然拥有了EventLoopThread,那么EventLoopThread中缺少的回调是够会是它传递呢?
这里的start函数就是按照numThreads_的数目逐个初始化EventLoopThread(记住每一个EventLoopThread内部都有一个EventLoop处于loop()状态)
原来将start函数的参数传递给了EventLoopThread作为其内部成员callback_,现在就是EventLoopThreadPool的拥有者给其传递的回调,然后这个回调在传递个EventLoopThread中,同时需要它的拥有者传递baseLoop。
如果neumThreads_为0,那么不进行线程的初始化,直接将baseloop传递给回调。
getNextLoop函数从池子中轮询的方式查找从loops_中找到合适的EventLoop.
简而言之:
这个类需要三个参数,一个baseloop(它的作用是什么呢,万一用户不准备开启EventLoopThreadPool,那么这个baseloop可以作为一个返回值)
一个是准备开启EventLoopThread的数目,就是setNumThread函数需要的参数
· 另一个就是开启EventLoopThreadPool的回调,就是start需要的回调,这个回调同样也赋值给EventLoopThread
那么是谁拥有EventLoopThreadPool呢? T cpServer
muduo源码分析--EventLoopThreadPool类,布布扣,bubuko.com
muduo源码分析--EventLoopThreadPool类
原文:http://blog.csdn.net/yusiguyuan/article/details/22294887