muduo源码分析---EventLoopThread
2014-03-27 14:51
513 查看
这个类只有两个对外接口的函数,一个构造函数,一个开始Loop的函数
类的内部成员:
一个Loop指针 loop_(说明内部并没有实例化EventLoop)
一个线程 thread_
一个锁 Mutex
一个条件变量 cond_
一个初始化回调 callback_
EventLoopThread初始化传递的是函数回调,同时开启一个线程,线程函数运行的就是实例化一个EventLoop,并让这个EventLoop进入到loop状态。
线程运行的函数为threadFunc,内部已经定义好,threadFunc内部初始化一个EventLoop,运行EventLoopThread内的回调callback_,将刚定义好的loop传入这个回调(现在这个回调肯定是EventLoopThread的拥有者注册进去的,然后EventLoopThread也就有了一个EventLoop,使用loop_指向他,在这个线程中这个EventLoop一直出于loop()状态)
但是是谁启开了运行threadFunc这个函数呢?是EventLoopThread中的thread_.start()函数,开启之后,就反悔了一个EventLoopThread线程中管辖的那个EventLoop
简而言之:
EventLoopThread这个类的作用就是开启一个线程,但是这个线程中有一个EventLoop,并且让这个EventLoop处于loop()状态,在上篇文章中折腾了很久分析EventLoop,竟然在一个线程中开启了一个这么庞大的东西!!!!!!
(假如在主程序中实例化一个EventLoopThread,那么主函数的threadid和EventLoopThread内部的EventLoop所处线程的threadid就不一样,这也就是为什么有queueInLoop()这个函数了,为什么有wakeupFd()这个函数了,在别的线程中想传递一个任务给另一个线程的EventLoop,那么就需要queueInLoop,然后再进行wakeup自己)
类的内部成员:
一个Loop指针 loop_(说明内部并没有实例化EventLoop)
一个线程 thread_
一个锁 Mutex
一个条件变量 cond_
一个初始化回调 callback_
EventLoopThread初始化传递的是函数回调,同时开启一个线程,线程函数运行的就是实例化一个EventLoop,并让这个EventLoop进入到loop状态。
线程运行的函数为threadFunc,内部已经定义好,threadFunc内部初始化一个EventLoop,运行EventLoopThread内的回调callback_,将刚定义好的loop传入这个回调(现在这个回调肯定是EventLoopThread的拥有者注册进去的,然后EventLoopThread也就有了一个EventLoop,使用loop_指向他,在这个线程中这个EventLoop一直出于loop()状态)
但是是谁启开了运行threadFunc这个函数呢?是EventLoopThread中的thread_.start()函数,开启之后,就反悔了一个EventLoopThread线程中管辖的那个EventLoop
简而言之:
EventLoopThread这个类的作用就是开启一个线程,但是这个线程中有一个EventLoop,并且让这个EventLoop处于loop()状态,在上篇文章中折腾了很久分析EventLoop,竟然在一个线程中开启了一个这么庞大的东西!!!!!!
(假如在主程序中实例化一个EventLoopThread,那么主函数的threadid和EventLoopThread内部的EventLoop所处线程的threadid就不一样,这也就是为什么有queueInLoop()这个函数了,为什么有wakeupFd()这个函数了,在别的线程中想传递一个任务给另一个线程的EventLoop,那么就需要queueInLoop,然后再进行wakeup自己)
相关文章推荐
- muduo源码解析之EventLoopThread
- Netty学习之旅------再谈线程模型之源码分析NioEventLoopGroup、SingleThreadEventExecutor
- muduo源码学习(18)-EventLoopThread
- muduo::EventLoopThread、EventLoopThreadPool分析
- Muduo网络库源码分析(四)EventLoopThread和EventLoopThreadPool的封装
- muduo源码分析之EventLoop::runInLoop()函数
- Muduo网络库源码分析(四)EventLoopThread和EventLoopThreadPool的封装
- muduo源码分析之EventLoop、Channel、Poller的实现
- Netty源码学习——EventLoopGroup原理:NioEventLoopGroup分析
- netty EventLoop write() 源码分析(二)
- muduo源码分析:线程类Thread封装
- WPA_SUPPLICANT源码分析(1):EVENT LOOP的实现 (转)
- Netty源码分析之NioEventLoop(转)
- WPA_SUPPLICANT源码分析(1):EVENT LOOP的实现
- netty4源码分析——NioEventLoop
- Netty 4.0源码分析1:服务端启动过程中的Channel与EventLoopGroup的注册
- Netty源码分析:NioEventLoopGroup
- WPA_SUPPLICANT源码分析(1):EVENT LOOP的实现
- 4000 Netty5.0的NioEventLoop源码详细分析