首页 > 其他 > 详细

muduo源码分析--EventLoopThreadPool类

时间:2014-03-27 18:33:36      阅读:487      评论:0      收藏:0      [点我收藏+]
这个貌似是个池,池里全是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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!