muduo源码分析--EventLoopThreadPool类

这个貌似是个池,池里全是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,如果设置的setNumthread为0,那么传递给的这个eventloop就需要用,那么这个baseloop可以作为一个返回值)
        一个是准备开启EventLoopThread的数目,就是setNumThread函数需要的参数
    ·    另一个就是开启EventLoopThreadPool的回调,就是start需要的回调,这个回调同样也赋值给EventLoopThread
        那么是谁拥有EventLoopThreadPool呢? T   cpServer

你可能感兴趣的:(muduo源码分析,muduo源码分析)